データベースの正規化とは
データベースの正規化とは、あるデータをある一定のルールに基づいて加工すること。
正規化の目的
- データの追加・更新・削除に伴うデータの不整合や喪失を防ぐ
- データのメンテナンス効率を高める
正規化の方法
データの冗長性(無駄なところ、重複箇所)をテーブルから排除する。
正規化の種類
正規化には非正規形、第1正規形、第2正規形、第3正規形、ボイスコッド正規形、第4正規形、第5正規形、が存在する。
- 非正規形
- 属性に単一でない値が含まれている
- 属性:テーブルで言う「列」「カラム」のこと
- 属性に単一でない値が含まれている
- 第1正規形
- 全ての属性が単一の値をとり、部分関数従属が存在する
- 部分関数従属:主キー項目の一部によって値が決定する関係
- 全ての属性が単一の値をとり、部分関数従属が存在する
- 第2正規形
- 全ての属性が単一の値をとり、部分関数従属は存在しないが、推移的関数従属が存在する
- 推移的関数従属:Xが決まればYが決まり、Yが決まればZが決まる関係
- 全ての属性が単一の値をとり、部分関数従属は存在しないが、推移的関数従属が存在する
- 第3正規形
- 全ての属性が単一の値をとり、部分・推移的関数従属が共に存在しない
- ボイスコッド正規形
- 前提として第3正規形を満たし、存在する関数従属が自明であるか、または、決定項がスーパーキーであること
- 自明:証明の必要が無く、関数従属になっている
- スーパーキー:行を一意に特定できる属性または、属性の集合
- 補足:基本的に普通に設計されたテーブルは、ボイスコッド正規形になる
- 前提として第3正規形を満たし、存在する関数従属が自明であるか、または、決定項がスーパーキーであること
- 第4正規形
- 前提としてボイスコッド正規形を満たし、多値従属性を含まない正規形
- 多値従属性:Xの値が一つ決まれば、Yの値が1つ以上決まる性質
- 前提としてボイスコッド正規形を満たし、多値従属性を含まない正規形
- 第5正規形
- 前提としてボイスコッド正規形を満たし、結合従属性を含まない正規形
- 結合従属性:多値従属性が分解後に2つになるケースにおいて、さらに分解可能な状態・性質
- 前提としてボイスコッド正規形を満たし、結合従属性を含まない正規形
コメント