Database Normalization (正規化)

DB 正規化

  • データ損失や不要な情報の導入なしに、データの一貫性とデータ重複を最小化し、最大限のデータ安定性を確保する安定したデータ構造へ変換するため、1 つのテーブルを 2 つ以上に分離する作業である。

DB 正規化の目的

  • データ整合性の維持
    • データ保存に必要な保存領域を最小化し、データの挿入、更新、削除に伴う異常を除去する。
  • データ構造の安定性を最大化するためである。

正規化過程

  • 第1正規化
    • すべての属性値が原子値を持つように分解する。
  • 第2正規化
    • 第1正規形を満たし、主キーではない属性が主キーに完全関数従属するように分解する。
      • ここで完全関数従属とは、主キーの部分集合が他の値を決定しないことを意味する。
  • 第3正規化
    • 第2正規形を満たし、主キーではない属性が主キーに直接従属(非推移的従属)するように分解する。
      • ここで推移的従属とは A->B->C が成立することであり、これを A,B と B,C に分解することが第3正規形である。
  • BCNF 正規化
    • 第3正規形を満たし、関数従属性 X->Y が成立するとき、すべての決定子 X が候補キーになるように分解する。