Skip to article frontmatterSkip to article content

正規化理論

法政大学
正規形Abbreviation定義
第一正規形1NFドメインがシンプルであること
第二正規形2NF1NFを満たし、全ての非キー属性が各候補キーに完全関数従属していること
第三正規形3NF2NFを満たし、全ての非キー属性が各候補キーに推移的関数従属しないこと

第一正規形

リレーショナルデータベースを設計するには、一般的に実体関連モデルを用いてER図を作成し、そこからリレーションスキーマを導出する。得られたリレーションスキーマは、全て第一正規形を満たさなければならない。

第二正規形

更新時異状

しかし、リレーションスキーマが第1正規形を満たしていても、様々な更新時異状(update anomaly)が発生する可能性がある。

例えば、以下のようなリレーションを考える。「学籍番号」と「科目番号」を主キーとする。

学籍番号科目番号科目名成績
2501CS101計算機科学92
2501CS102プログラミング85
2502CS101計算機科学88
2502CS103データベース90

関数従属性

つまり、XYX \to Yが存在する場合、任意のインスタンスr1r_1r2r_2において、XXの値が同じならば、YYの値も同じであることを意味する。

正規化

第三正規形

更新時異状

第二正規形を満たしていても、更新時異状が発生する可能性がある。

例えば、以下のようなリレーションを考える。「学籍番号」を主キーとする。

学籍番号氏名学部キャンパス
2501山田太郎理工学部小金井
2502佐藤花子情報学部小金井
2503鈴木一郎経済学部多摩
2504田中二郎文学部市ヶ谷
2505高橋三郎文学部市ヶ谷

ここで、学籍番号\to氏名, 学籍番号\to学部, 学籍番号\toキャンパスとする。主キーは学籍番号であるため、このリレーションは第二正規形である。

推移的関数従属性

正規化

練習

下記のリレーションスキーマは第一正規形を満たしているが、第二正規形や第三正規形を満たしていない。問題1から3を解いて、第三正規形に正規化してみよう。同じ職位の場合は、同じ給与であるとする。プロジェクトにおいての社員の仕事時間は、プロジェクト番号と社員番号の組み合わせで一意に決まるとする。

  1. リレーションスキーマを完全関数従属性を定義してみよう。
  2. 定義した完全関数従属性を用いて、リレーションスキーマを第2正規形に正規化してみよう。
  3. 第2正規形に正規化したリレーションスキーマを用いて、第3正規形に正規化してみよう。