私はすでに回答を知っていると思われる質問がありますが、私はあなたの意見を残したいと思います。店舗データベースの履歴データを維持する
私はシンプルなショップデータベースを作成しています。私はProductテーブルとOrderテーブルを持っており、これらの2つの間にOrder2Productというジャンクションテーブルを作成して注文の内容を格納しています。
Product
- id (pk)
- name
- price
Order
- id (pk)
- order_date
- customer (fk)
Order2Product
- order (fk)
- product (fk)
- quantity
この小さなモデルでは、Order2Productテーブルにレコードを追加し、各レコードに数量を設定して注文を保存できます。
ただし、このモデルでは履歴データは保持されません。店主が商品3の価格を変更し、商品3が1年前の注文である場合、その注文の価格が変更されるため、たとえば、注文が行われました。
製品名も同じです。店主が商品の「キャンディボックス」の名前を「ジャックダニエルのギフトボックス」に変更すると、これは請求書の転載に不思議に見えます。
私の意見では、製品の外部キーを使用して製品にリンクするのではなく、Productテーブルの名前と価格をOrder2Productテーブルにコピーするだけです。
あなたはどう思いますか?データの複製はデータベース設計上の悪い習慣であるため、面白くないと感じます。一方、これは、私が置かれた注文の信頼できる記録を維持したい場合には、他に解決策がないケースだと思います。
代わりに、製品リビジョンを使用してレコードの変更ごとに新しい製品レコードを保存することもできます。しかし、このモデルは、ユーザーがAccessデータシートを介してデータに直接アクセスできるMs Accessを対象としているため、製品レコードを変更することができます。
とにかく価格と商品名と税率をコピーします。注文があったときの状況を反映させる請求書が必要です。ありがとう。 – Julius
私は製品名をコピーしませんが、あなたの意見を取ります。請求書を転載することができることが法的に要求されることがよくあります。さらに、製品記録はランナーを行う可能性があります。それは私自身のアプリケーションの場合です。もちろん、顧客レコードの情報を同じ理由で注文ヘッダーにコピーすることもできます。 –
私はまだ顧客情報を考えていませんでした。いい視点ね。 – Julius