データベースの正規化とは、関係データベースに対する、正規形と呼ばれる形式に関係を準拠させる方式である。 正規化によって、データの冗長性と不整合が起きる機会を減らすことができる。
データベーススペシャリスト試験では、正規形の根拠を述べる決まり文句がある。教科書によって違うので比較してみよう。
書籍 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 の書き方も参考になるだろう。
まりんきょ学問所 > コンピュータの部屋 > システムの部屋 > データベースシステム > 正規化