0

これについてどう思いますか?タブ区切りのテキスト形式の新しいデータの統合に取り組んでおり、すべての小数列は単一の整数として保持されます。小数を決定するには、数値に.01を掛ける必要があります。これは、パーセンテージ、重量、価格情報などに対して行われます。たとえば、アイテムの価格は3259データファイルのように表され、それを表示する場合は、「実際の」量を取得するためにそれを乗算する必要があり32.59ます。

これは良い考えですか、悪い考えですか?データ構造をベンダーが提供するものと同じに保つ必要がありますか、それともデータベース列を真の10進数にし、SSISまたはある種のETLプロセスを使用して、整数列を10進数に自動的に乗算する必要がありますか?この時点では、ORMとストアドプロシージャのどちらを使用するのか、またはデータを取得する対象を決定していないため、長期的に考えて、どちらのアプローチを使用するかを決定しようとしています。また、DTOなどのコードでこれを簡単に処理することもできます。

public class Product
{
    // ...
    private int _price;
    public decimal Price
    {
        get
        {
            return (this._price * .01);
        }
        set
        {
            this._price = (value / .01);
        }
    }
}

しかし、それはクラスの側で余分で不必要な作業のように思えます。データは定期的に更新を取得する必要があるベンダーによって整数形式で提供されることを念頭に置いて、これにどのようにアプローチしますか。

4

4 に答える 4

4

「これは良い考えだと思いますか、それとも悪い考えだと思いますか?」

悪い。

「ベンダーから提供されたものと同じデータ構造を維持する必要がありますか?」

いいえ。

「データベースの列を真の 10 進数にする必要がありますか?」

はい。

正しいことをするのはとても簡単です。現在、データは「.」なしで送信されます。整数を小数から分離する。それは本当の意味ではありません。

データは 10 進数です。10 進数の計算が機能します。言語とデータベースで提供されている 10 進数を使用します。Decimal 演算の独自のバージョンを発明しないでください。

于 2009-02-10T20:14:43.820 に答える
1

個人的には、データベースにデータを正しく保存し、更新が行われるたびに単純な変換を行うことを望んでいます.

于 2009-02-10T20:13:59.483 に答える
0

辛辣に: それらは int としても保持されません。これらは、解析が必要な文字列です。

哲学的に:ファイルに情報があり、データベースにデータを書き込む必要があります。これは、意味のある/有用なものにするために必要な方法で情報を変換することを意味します。この変換を前もって行わないと、データベースのすべてのコンシューマーに対して変換を繰り返さなければならなくなります。

「ファイルには何が入っていましたか?」という質問に答えることができるなど、データの変換が許可されていないシナリオがいくつかあります。これらのシナリオでは、データを文字列として書き込む必要があります。解析が失敗した場合、ファイルの正確な表現が得られません。

于 2009-02-10T20:13:54.087 に答える