これがあなたのテーブルです。
Shirt
id product color size stock
---------------------------------------------
1 Nike Shirt black M 5
2 Nike Shirt white L 10
3 Nike Shirt blue M 2
4 Nike Shirt blue XL 3
....
商品名「ナイキシャツ」と色「ブルー」をどのように複製したかがわかります。正規化されたリレーショナルデータベースでは、情報を複製したくありません。 4列目で誰かが誤って「ナイキシャツ」を「ナイキスカート」に変更した場合はどうなると思いますか?
それでは、正規化 しましょう。 あなたのテーブル。
まず、Productテーブルから始めます。
Product
id product
------ ------------
0 Nike Shirt
通常、データベースID番号は1ではなく0から始まります。
次に、カラーテーブルを作成しましょう。
Color
id color
------ -------
0 black
1 white
2 blue
次に、サイズテーブルを作成しましょう。
Size
id size
------ -----
0 XS
1 S
2 M
3 L
4 XL
5 XXL
これで、3つの個別のオブジェクトテーブルができました。在庫があるかどうかを確認できるように、どのようにそれらを組み合わせるのですか?
元のテーブルで正しい考えがありました。
Stock
id product color size stock
---------------------------------------------
0 0 0 2 5
1 0 1 3 10
2 0 2 2 2
3 0 2 4 3
製品、色、およびサイズの番号は、製品、色、およびサイズのテーブルに戻る外部キーです。これを行う理由は、情報の重複を排除するためです。すべての情報が1か所と1か所にのみ保存されていることがわかります。
StockテーブルではIDは必要ありません。製品、色、サイズは一意である必要があります。これにより、これら3つのフィールドが在庫テーブルの複合キーになる可能性があります。
実際の小売店では、製品はさまざまな属性を持つ可能性があります。属性は、おそらくキー/値テーブル に格納されます。 。単純なテーブルの場合、テーブルを正規化されたリレーショナルテーブルに分割できます。