整数を使用し、データ型として小数を使用して対の乗算を必要とする - あなたの考えは何ですか?
-
22-08-2019 - |
質問
この上のあなたの考えは何ですか?私は、タブ区切りテキスト形式でありますいくつかの新しいデータを統合することに取り組んでいる、と小数すべての列は、単一の整数として保持されます。小数量を決定するために、あなたは0.01で数を乗算する必要があります。これは、パーセンテージ、重量および価格情報のようなもののためにこれを行います。たとえば、アイテムの価格は、データファイルに3259
として表現される、と私はそれを表示したいとき、私は32.59
の「本物の」量を得るために、それを乗算する必要があります。
あなたはこれが良いか悪いアイデアだと思いますか?私は、ベンダーが提供するものと同じ自分のデータ構造を維持する必要がある、または私はデータベースの列に真の小数を作成して、自動的に10進数に整数列を乗算するSSISまたはETLプロセスのいくつかの並べ替えを使用する必要がありますか?この時点で、私は、データを取得するために、ORMまたはストアドプロシージャまたは何を使用するつもりならば決めていないので、私は、長期的に考えると、使用するアプローチ決定しようとしています。
:私にも簡単にだけ、DTOまたは類似のコード内での線に沿って何かを、これを扱うことができますpublic class Product
{
// ...
private int _price;
public decimal Price
{
get
{
return (this._price * .01);
}
set
{
this._price = (value / .01);
}
}
}
しかし、それは、クラスの一部に余分な、不要な作業のように思えます。どのようにあなたは、データが定期的に更新情報を取得する必要がありますベンダーによって整数形式で提供されていることを念頭に置いて、このアプローチを考えています。
解決
「あなたはこれが良いか悪いアイデアだと思いますか?」
悪います。
「私は、ベンダーが提供するものと同じ自分のデータ構造を維持しますか?」
はありません。
「私は本当の小数データベース列を作るべきか?」
はいます。
これは、右何やってそんなに簡単です。現在、データはなしで送信されました「」小数から整数を分離します。それは、任意の本当の意義ません。
のデータは10進数です。小数点の数学の作品。あなたの言語とデータベースが提供小数点演算を使用してください。 10進法計算の独自のバージョンを発明しないでください。
他のヒント
個人的に私はずっと私のデータベースに正しく保存されたデータを持っているだけのシンプルな変換に更新が入るたびに行うことを好むだろう。
Pedantically:彼らはいずれかのint型として保存されていません。彼らは、構文解析を必要とする文字列です。
Philisophically:あなたは、ファイル内のの情報の持っていて、データベースにのデータのを記述する必要があります。すなわち、それは意味のある/有用なものとするために必要な任意の方法で情報を変換することを意味します。あなたはこのアップ変換フロントをしない場合は、データベースのすべての消費者間で変換繰り返す運命にされます。
あなたは、このような質問に答えることができることなどのデータを変換するために許可されていないいくつかのシナリオがあります:「?何のファイルでした」。これらのシナリオは、文字列として書き込まれるデータを必要とする - 解析が失敗した場合は、ファイルの正確な表現を持っていないでしょう。
。私の心の中で、このシナリオでのInt上小数点を使用しての最も重要な側面は、保守性です。
のテーブルに格納されたデータは、任意の操作を必要とせずに明確に有意義である必要があります。操作が必要な場合で、それは(例えば、フィールド名などから)であることを明らかにする必要があります。
私は最近、2-8値として曜日が格納されたデータを扱っ。あなたは、このうち秋には(テストは、さまざまな理由で問題を示さなかったが、ライブ使用は政治的爆発を起こしました)原因を想像することはできません。
あなたはこのような状況に実行しない場合は、、私は、データの書込みまたはストアドプロシージャやビューを使用せずにテーブルから読み取ることができません確実にするために絶対確実だろう。これは、必要な操作は両方施行され、文書化されていることを確認することができます。あなたはこれらの両方を持っていない場合は、将来的にあなたを次のいくつかの貧しい人々芝はあなたの非常に名前を呪います。