正規化

作成日 : 2017-03-28
最終更新日 :

1.はじめに

データベースの正規化とは、関係データベースに対する、正規形と呼ばれる形式に関係を準拠させる方式である。 正規化によって、データの冗長性と不整合が起きる機会を減らすことができる。

2. 正規形化の根拠

データベーススペシャリスト試験では、正規形の根拠を述べる決まり文句がある。教科書によって違うので比較してみよう。

書籍 X では次のように記述している。私の趣味で一部改変している。

長さ第1正規形第2正規形第3正規形
属性値に繰り返しグループがない属性だけを持つから 属性値に繰り返しグループがない属性だけを持っており、かつ、いずれの非キー属性も全ての候補キーに対して完全関数従属しているから 属性値に繰り返しグループがない属性だけを持っており、かつ、いずれの非キー属性も全ての候補キーに対して完全関数従属しており、 かつ候補キーと非キー属性との間に推移関数従属性がないから
属性値に繰り返しグループがない属性だけを持っているが、非キー属性が候補キーの一部に対して部分関数従属しているから 属性値に繰り返しグループがない属性だけを持っており、かつ、いずれの非キー属性も全ての候補キーに対して完全関数従属しているが、 候補キーと非キー属性との間に推移関数従属性があるから
属性値に繰り返しグループがない属性だけを持っておいるが、 非キー属性{A, B, C, D}が候補キー{P, Q, R}の一部であるRに対して部分関数従属しているから 属性値に繰り返しグループがない属性だけを持っており、かつ、いずれの非キー属性も全ての候補キーに対して完全関数従属しているが、 候補キー L と非キー属性 R と {A, B, C, D}との間に“L → R → {A, B, C, D} ”という推移関数従属性があるから

書籍 Y では次のように記述している。私の趣味で一部改変している。

長さ第1正規形第2正規形第3正規形
すべての属性が単一値で、候補キー{A, B}の一部である B に非キー属性の C が部分関数従属しているから すべての属性が単一値で、候補キーからの部分関数従属性はないが、推移的関数従属性 A → B → C があるから すべての属性が単一値で、候補キーからの部分関数従属性がなく、候補キーからの推移的関数従属性もないから

私は書籍 Y の書き方がよいように思う。特に第1正規形であることを保証する「すべての属性が単一値で」という書き方がシンプルでよい。 ただし、字数に余裕があるときは、書籍 X の書き方も参考になるだろう。

まりんきょ学問所コンピュータの部屋システムの部屋データベースシステム > 正規化


MARUYAMA Satosi