3つの正規形

第1正規形: 繰り返し項目を排除する

第2正規形: 部分関数従属の排除

第3正規形: 推移的関数従属の排除


ちょっと余計に知っておきたい人のうんちく知識

さらに制約を課した「第4正規形」「第5正規形」もある。
正規化の概念は、最初E.F.コッド氏が提唱し定式化した。これはコッド正規形言う。
後にR.F.ボイス氏とE.Fコッド氏により改良された正規型をボイスコッド正規形と言う。

 

正規形でないデータと、3つの正規形のデータがどのように異なるかを、音楽データベースを例にとって見てみよう。

正規形でないデータ

小林推薦曲

倖田 夾未(女性ソロ)の「1000の言葉」、邦楽

raphael「夢より素敵な」, asian ROCK

田村推薦曲

The OFF SPRING,"All I Want", Punk Rock

...

.

第1正規形の条件は、くりかえし構造を廃し、テーブル型のデータとすることである。

以下のような形にすれば第1正規形の条件を満たしている。

 

第2正規形の条件は、「部分関数従属の排除」だ。

これは用語は難しいが、ようするに、一つのテーブルのなかのあるフィールドの値から、他のフィールドの値が決まってしまうのであれば、その部分は別のテーブルに移しなさいということだ。上のテーブルでは、アーティスト欄がわかれば、そのアーティストがグループであるか、また性別が女性であるか男性であるかは決まってしまう。この部分を別のテーブルに移動することで第2正規形の条件が満たされる。



さらに第3正規形とするためには、「推移的関数従属の排除」を行う必要がある。

これもたいへん難しい言葉だが、上のデータをよく見てみると、なんとなく無駄な部分がないだろうか。曲目が決まれば「曲名」「アーティスト」は決まってしまうのに、上の表では何度も同じデータが記載されている。

しかし、これは部分関数従属ではない。ためしに、曲名によって決まる他のデータがあるかどうかを考えてみると、「春」という曲は異なる曲が2曲含まれているので、曲名だけでは楽曲が決まらないから、ジャンルなども決まらないのである。

そこで、「楽曲」というデータにはない実体を想定してそれにIDをつけ、「楽曲ID」とすれば、この楽曲IDからは、「曲目」「アーティスト」「ジャンル」などが決まることになる。これが「推移的関数従属」ということだ。

「楽曲ID」というあらたなデータを追加することで、「推移的関数従属」をとりのぞいたのが下のテーブルである。

 

 

第3正規形の作り方

第1正規形: 繰り返し項目を排除する

第2正規形: 部分関数従属の排除

第3正規形: 推移的関数従属の排除

では判りにくい。そこで第3正規形を作る簡単な方法を黒板で教えよう。

この方法で、響子さんのネットショップを第3正規形にしてみよう。

また以下のようなデータベースを第3正規形にしてみよう。

1 自分の知り合いの趣味、知り合い同士が知り合いかどうか

2