# 正規化

# 非正規系

定義

  • リレーションRの属性の中に, 単一でない値が含まれている
  • 同じ要素が繰り返しあらわれているとき, 非正規系にあたる
  • e.g.) 伝票

# 第1正規系

定義

  • リレーションRの全ての属性が単一値である
  • 非正規系の繰り返し項目を無くした形がこれ
  • 部分関数従属性があると, 第2正規系になれないやつ

# 第2正規系

定義

  • リレーションRが次の2つの条件を満たす
    • 第1正規系であること(全ての値が単一値である)
    • 全ての非キー属性は, いかなる候補キーにも部分関数従属していない(完全関数従属である)こと
      • 部分関数従属とは, 候補キーの一部が非キー属性を決定している状態
  • 第1正規系よりも強いが, 第3正規系よりは弱い
  • 候補キーの全てが, 非キー属性に対して完全に関数従属している

# 第3正規系

定義

  • リレーションRが次の2つの条件を満たす
    • 第2正規系であること(全ての値が単一値であり, かつ全ての非キー属性が完全関数従属であること)
    • 全ての非キー属性は, いかなる候補キーにも推移的関数従属していない
  • 候補キー(A) \rightarrow 非キー属性(B) \rightarrow 非キー属性(C)のような推移が存在する時
  • 真ん中の非キー属性を候補キーとして,
  • (A) \rightarrow (B), (B) \rightarrow (C)
  • のようなリレーションに変わった時に第3正規系になる

推移的関数従属について

再帰的に非キーから候補キーにリレーションが存在する時, これは推移的関数従属ではない

# ボイス・コッド正規系

定義

  • リレーションRに存在するあらゆる関数従属性に関して, 次のいずれかが成立する
    • XYX \rightarrow Yは自明な関数従属性である
      • 自明な関数従属とは, ABA \subset Bのようなときの ABA \rightarrow Bのリレーションのこと
    • XはRのスーパーキーである

# ボイス・コッド正規系のデメリット

  • 全ての関数従属性が保存されるわけではない
    • 情報無損失分解ではないということ(第1-3正規系は情報無損失分解)

# 第4正規系

定義

  • リレーションRに存在するあらゆる多値従属性について, 次のいずれかが成立する
    • XYX \rightarrow \rightarrow Yは自明な多値関数従属である
      • 多値従属性とは, 項目Xの値が1つ決まれば, 項目Yの値が1つ以上決まる性質のこと
    • XはRのスーパーキーである

# 第5正規系

定義

  • リレーションRに存在するあらゆる結合従属性について, つぎのいずれかが成立する。
    • *(A1, A2, ..., An)は自明な結合従属性である
    • AiはRのスーパーキーである
Last Updated: 9ヶ月前