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正規系のテーブルを分割して、推移関数従属性を排除するんやな。
- 正規化を行っても正しくデータを元に戻せるようにしなあかんのやな。