PostgreSQL データベースの正規化

https://oss-db.jp/dojo/dojo_info_04

第1正規形

  • 主キーを設定する。
  • 繰り返し現れる列のデータをグループ化して、別の表に切り離す。
  • 導出項目(他の属性から算出できる項目)を削除する。

第2正規形

  • 第一正規形の条件を満たす。
  • すべての非キー属性が候補キーに完全関数従属する。
  • 主キー以外の項目(非キー属性)について、主キーの一部の要素だけで決まる(部分関数従属と言います)ものがあれば別テーブルに分離させましょう。

第3正規形

  • 第二正規形の条件を満たす。
  • すべての非キー属性が候補キーに推移的関数従属しない。
  • 主キー以外の項目について項目同士で依存関係を持っているもの(推移的関数従属と言います)も、別テーブルに切り分けましょう。

関数従属性

  • YはXに関数従属する。
  • X → Y
部分関数従属性
  • YがXの一部に関数従属することであり、XがABからなるとすると、「{A, B} → Y」かつ「A → Y」または「B → Y」と表す。
  • Yは、「A → Y」の場合はAに、「B → Y」の場合はBに部分関数従属するという。
完全関数従属性
  • 「XがABからなる場合、AとBが決まるとYが決まる」という関係。
  • 「{A, B} → Y」と表記し、YはAとBに完全関数従属するといいます。
推移関数従属性
  • 「Xが決まるとYが決まり、Yが決まるとZが決まる」という関係。
  • X → Y、 Y → Z、但しY → Xは不成立の場合、「X → Z」と表記し、ZはXに推移関数従属するといいます。