2

簡単なECサイトを作っているのですが、注文確認や作成に疑問があります...

それgood practicesは本当の問題よりも問題です...

合計注文額を計算してデータベースに挿入する必要がありますか、それとも注文を読んだり何かをしたりするたびに計算する必要がありますか?

ありがとう

4

3 に答える 3

3

トランザクションデータベース(つまり、メインのデータベース)には、計算値を保存しないでください。十数行を合計することは何もありません。

ただし、分析データベース(別名ビジネスインテリジェンスデータベース、データウェアハウス)には、計算された合計を確実に保存する必要があります。

于 2012-08-17T05:45:29.477 に答える
3

データベースにおけるベスト プラクティスとは正規化されたデータを意味し、計算可能な値を格納することはそれを侵害します。

2 つの値の間に不一致が生じないことが絶対に確実でない限り、計算できるものは保存しないでください

たとえば、注文が 100 ドルの商品 2 つで構成されていて、注文が 150 ドルに設定されている場合、何が起こると思いますか?

場合によっては、別の方法で計算できる値を保存する正当な理由 (通常はパフォーマンス関連) がありますが、パフォーマンスの向上は重要かつ必要であり、不整合の可能性は削除または計画されている必要があります。

トリガーや具体化されたビューなどを使用して可能性を排除したり、ビジネス ロジックを変更して問題を検出して修正したり、その他の方法でそれらを計画したりできます。

しかし、通常、パフォーマンスの向上は、潜在的な問題を軽減するための余分な努力に値するものではありません。結局のところ、何百万もの個別のアイテムが含まれる注文がいくつありますか? もちろん、米国国防総省以外では:-)

于 2012-08-17T05:42:37.487 に答える
1

推奨される方法として、既存の列から派生できる値をテーブルに格納しないでください。

これをしない理由はたくさんあります。

  1. 基になる列のいずれかを更新する場合は、派生列も更新する必要があります。

  2. テーブルのサイズが大きくなります

など..など.

于 2012-08-17T05:54:08.357 に答える