データベースの正規化まとめ
投稿日: 更新日:
3つの正規形の達成条件
正規化系 | 達成条件 |
---|---|
第1正規形 | 「繰り返しの列」「セルの結合」が含まれていないこと |
第2正規形 | 部分関数従属する列が含まれてないこと |
第3正規形 | 主キー以外に関数従属する列がない |
実際に正規化する
非正規形
今回は以下の表を正規化します
非正規形から第1正規形
商品ID
、商品名
、数量
の列が繰り返しています。第1正規形の条件は「繰り返しの列がない」でした。ですので、変形します。
第1正規形から第2正規形
第1正規形の主キーは注文ID
と商品ID
です。
ここで表を見ると以下のことが分かります
数量
は注文ID
と商品ID
の2つが定まると、1つに定まる商品名
は商品ID
のみで定まる購入者ID
、購入者
は注文ID
のみで定まる
このように、複合主キーの1つを利用して定まる状況を「部分関数従属」といいます。
では部分関数従属であるものを切り出します。
第3正規形へ
ここで、第2正規形で得れた表を見ると、購入者
は購入者ID
に従属しており主キーの注文ID
には直接的には従属していません。
このように間接的に主キーに従属している状態を「推移関数従属」といいます。
では推移関数従属であるものを切り離します
完成
得られた表は以下のようになります
まとめ
- 第1正規形への変形:繰り返し列の除去
- 複合主キーへの一部への従属を切り離し
- 主キー以外への従属を切り離し
参考文献
すっきり分かるSQL入門第3版 飯田理恵子、中山清喬 (2022) インプレス