DB正規化の基礎

PG基礎

0. はじめに

RDBMSの正規化についてまとめたんやな。

1. 正規化とは

  • データの冗長性をなくたり、データ更新時にデータに矛盾が出ないようなテーブル設計にすることやな🤔
  • 正規化が行われていないDBは、更新ミスが多発したりするんやな🤔
  • 正規化されたテーブルの形式を〇正規形と呼ぶんやな🤔
  • 第1正規系~第6正規系まであるけど、第3正規系まで覚えとけば生きていけるみたいやな🤔

2. キー

2-1. 候補キー

  • レコードを1つに特定できるようなデータ列のことやな。
  • 候補キーは2つ以上ある場合もあるんやな。
  • 候補キーの値はNULLになってもいいんやな。

2-2. 主キー

  • 候補キーの中から最適な組み合わせを1つだけ選んだもののことやな。
  • 主キーの値はNULLになってはいけないんやな。

2-3. 非キー

  • 候補キーでないキーのことやな。

3. 関数従属性

  • そもそも関数従属性とは、あるレコードにおいて、カラムAが決まればカラムBが決まるような関係のことやな。
  • A → Bのように記述されることがあるみたいやな。

3-1. 部分関数従属性

  • 部分関数従属性とは、あるレコードにおいて、非キーが、主キーの一部に関数従属している関係のことやな。
  • 「商品ID」という候補キーがあったとして、「商品名」「価格」という非候補キーがあったとするやん。
    「商品名」「価格」は「商品ID」で決まるわけやから、「商品名」「価格」は「商品ID」に部分関数従属している、と言うんやな。

3-2. 推移関数従属性

  • 推移関数従属性とは、あるレコードにおいて、非キーが、主キー以外のキーに関数従属している関係のことやな。

4. 正規化

4-1. 第1正規系

  • 第1正規系の条件は、テーブルで表現できる形になっていることやな。
  • つまり、1つのカラムに1つのデータを格納している状態のことやな。
  • 最低限この状態でもテーブルとして扱えるってことやな。最低限な。
  • つまり、第1正規系にもなってないデータは、論外ってことやな。エ〇セルで管理しとけと。

4-2. 第2正規系

  • 第2正規系の条件は、テーブル内に部分関数従属性が存在しないことやな。
  • つまり、第1正規系のテーブルを分割して、部分関数従属性を排除するんやな。
  • 分割されたテーブルに対しても、主キーを設定せんとあかんのやな。
  • 正規化を行っても正しくデータを元に戻せるようにしなあかんのやな。

4-3. 第3正規系

  • 第3正規系の条件は、テーブル内に推移関数従属性が存在しないことやな。
  • つまり、第2正規系のテーブルを分割して、推移関数従属性を排除するんやな。
  • 正規化を行っても正しくデータを元に戻せるようにしなあかんのやな。