# 正規化
# 非正規系
定義
- リレーションRの属性の中に, 単一でない値が含まれている
- 同じ要素が繰り返しあらわれているとき, 非正規系にあたる
- e.g.) 伝票
# 第1正規系
定義
- リレーションRの全ての属性が単一値である
- 非正規系の繰り返し項目を無くした形がこれ
- 部分関数従属性があると, 第2正規系になれないやつ
# 第2正規系
定義
- リレーションRが次の2つの条件を満たす
- 第1正規系であること(全ての値が単一値である)
- 全ての非キー属性は, いかなる候補キーにも部分関数従属していない(完全関数従属である)こと
- 部分関数従属とは, 候補キーの一部が非キー属性を決定している状態
- 第1正規系よりも強いが, 第3正規系よりは弱い
- 候補キーの全てが, 非キー属性に対して完全に関数従属している
# 第3正規系
定義
- リレーションRが次の2つの条件を満たす
- 第2正規系であること(全ての値が単一値であり, かつ全ての非キー属性が完全関数従属であること)
- 全ての非キー属性は, いかなる候補キーにも推移的関数従属していない
- 候補キー(A) 非キー属性(B) 非キー属性(C)のような推移が存在する時
- 真ん中の非キー属性を候補キーとして,
- (A) (B), (B) (C)
- のようなリレーションに変わった時に第3正規系になる
推移的関数従属について
再帰的に非キーから候補キーにリレーションが存在する時, これは推移的関数従属ではない
# ボイス・コッド正規系
定義
- リレーションRに存在するあらゆる関数従属性に関して, 次のいずれかが成立する
- は自明な関数従属性である
- 自明な関数従属とは, のようなときの のリレーションのこと
- XはRのスーパーキーである
- は自明な関数従属性である
# ボイス・コッド正規系のデメリット
- 全ての関数従属性が保存されるわけではない
- 情報無損失分解ではないということ(第1-3正規系は情報無損失分解)
# 第4正規系
定義
- リレーションRに存在するあらゆる多値従属性について, 次のいずれかが成立する
- は自明な多値関数従属である
- 多値従属性とは, 項目Xの値が1つ決まれば, 項目Yの値が1つ以上決まる性質のこと
- XはRのスーパーキーである
- は自明な多値関数従属である
# 第5正規系
定義
- リレーションRに存在するあらゆる結合従属性について, つぎのいずれかが成立する。
- *(A1, A2, ..., An)は自明な結合従属性である
- AiはRのスーパーキーである