🌊

テーブルの正規化

2024/03/29に公開

非正規化(正規化されていない)状態

第1正規化

  • 計算して表示できるものは削除(上記の金額フィールド)
  • 繰り返し部分(上記赤枠部分)を分離し、両方のテーブルを関連付けるため受注番号を設ける

第1正規化が終わった状態

第2正規化

複合主キー({受注番号・商品番号})がある受注明細テーブルに注目して分離する

商品番号と主キーとした別テーブル(商品番号・商品名・単価)に分離し、両方を関連付けるため商品番号を設ける

第2正規化が終わった状態

<補足>

  • 関数従属→例えば商品番号が決まれば商品名も決まることを指す
  • 部分関数従属→{受注番号・商品番号}の一部である商品コードに商品名、単価は関数従属している

第3正規化

正規化を行っていない受注テーブルに注目する

得意先番号を主キーとした以下の2つの別テーブルに分離し、両方を関連付けるための得意先番号と担当営業番号を設ける

  • 得意先番号・得意先氏名
  • 担当営業番号・担当営業氏名

第3正規化が終わった状態

<補足>
推移的関数従属
受注番号が決まれば得意先番号が決まり、得意先番号が決まれば担当営業番号が決まるので、結果的に受注番号は担当営業番号が決まる関係のこと

Discussion