これは特定の技術的な問題に関する質問ではなく、データベース設計に関する一般的な質問です。それにもかかわらず、技術スタックは、ASP.NET MVC、SQL DB です。
私は最近、注文-->注文アイテム-->製品コンセプトを持つシステムを継承しました。つまり、注文には多くの注文アイテムがあり、各注文アイテムは1つの製品に関連付けられています。
Order Item は、DB に保存されるときに以下を格納します。
- オーダーID
- 製品番号
- 数量
- 単価 (製品から書き込まれる)
- NET 合計 (数量 * 単価に基づいて計算)
- バット
- 総収入
UI から表示される注文アイテムは次のようになります。
Qty | ProdCode | ProdDescription | Unit Cost | Total NET | VAT | Total Gross
数量、単価、合計はすべて注文項目から UI に取り込まれ、製品コードと製品の説明は関連する製品レコードから取り出されます。
すべてが十分に賢明に思えます。
したがって、私の質問は、製品からどのデータを書き込む必要があるか、製品からどのデータを参照する必要があるかを中心に展開しています。特に、Unit Cost は、Order Item が作成されたときに Product から書き込まれます。これは、製品の価格が変更され、この変更を古い注文に適用したくないためだと思います。わかりました、理にかなっています。
私の質問は、同じロジックが製品コードと製品説明にも適用されるべきですか? もしそうでなければ、なぜですか?
私の考えでは、製品コードと説明も注文アイテムに書き込まれる必要があるようです。つまり、製品コードと説明は、製品単価と同じくらい変更される可能性があります。その場合、戻って古い注文を確認すると、注文の製品コードと説明が最初に注文したものと異なっているように見えますが、これは間違っているように思えます。
システムを構築した開発者は、システムを設計したときの考えを話し合うことができなくなりました。
システムは正常に機能しており、苦情はありません。ただし、これは主に、さまざまなユーザーが編集できるにもかかわらず、製品コード/説明が更新されていないためです。
大規模な変更を行う前に、人々の考えを聞きたいと思います.これは一般的なシナリオであり、私は何も心配していませんか?