質問: データベースの正規化について学習しているのですが、第三正規形の分け方がよくわからないです。 こちらのサイトでは、第三正規形で商品マスタには商品コードと商品名のみが記載されています。 テーブル全体では、 ``` 売上番号、商品コード、売上日、店舗コード、単価、数量、金額 ``` を保持するテーブルと ``` 店舗コード、店舗名 ``` を保持するテーブルと ``` 商品コード、商品名 ``` を保持するテーブルに分けられています。 ここでの「単価」は商品の一個単位の値段のことを指しており、「金額」は単価×数量の小計金額を指していると理解しています。 個人的に、単価も商品マスタに移動させて、金額の項目を削除することができるのではないかと思ったのですが、間違いでしょうか? なぜ単価は商品マスタに移動せず、あわせて元のテーブル(主テーブルとでも呼ぶのでしょうか)には金額が残るのでしょうか? teratailで聞くようなことではないかもしれませんが、ご教示いただけますと幸いです。 よろしくお願いいたします。
回答: リンク先の説明では単価を持った商品マスタも説明されています。 単に正規化の説明が長くなるので単価まで含めなかっただけでしょう。 説明の流れとしては、あなたの解釈は正しいと思います。 ただ、実際の設計では、商品マスタに単価を持たせたとしても、売上テーブルに単価を残す場合もあります。 それは売上金額の内訳(単価X数量)としてです。 売値としての単価は変更される場合がありますので、記録として保持するという意味合いです。