以下のテーブルを見てください。
顧客コード | 顧客名 | 住所 | 電話番号 |
主キーは顧客コード、それ以外の項目は顧客名、住所、電話番号です。主キーとそれ以外の項目の関係を関数従属といいます。
ちょっと小難しい言葉なので補足すると、y=xで(中学の数学に出てくる関数)xが例えば1だとyは1ですよね。y=2xならxが1でyは2。まぁ当たり前なのですが、xが決まればyが決まる。このような状態をyはxに関数従属しているといいます。
同じように顧客コードが決まれば、顧客名、住所、電話番号は決まります。つまり、顧客名、住所、電話番号は顧客コードに関数従属しているんです。
リレーショナルデータベースは、キーとそれ以外の項目からなっています。キーというのはそれがわかれば、他の値が決定するという、先ほど説明した関数従属させる側の項目のことです。
キーにはいくつかの種類があって、テーブルの中から、レコードを特定できるキー項目のことを候補キーといいます。その中でも中心的なキー項目を主キーといいます。キー項目は、一つの項目からなることもありますし、複数の項目が合せてキーということもあります。
例えば銀行口座を例にすると・・・。
口座番号 | 店番号 | 顧客番号 | 氏名 | 住所 | 残高 |
この場合、候補キーは、口座番号と、店番号と顧客番号を合せたものになります。
主キーになるものはこのうちのどちらかで、テーブルが例えば口座の情報であれば、口座番号が主キーになりますし、顧客のテーブルであれば、店番号と顧客番号が主キーになります。
正規化されたテーブルはキー項目とそれ以外の項目のみになります。逆に言うと、正規化とは、そのテーブルの主キーと、それに関数従属する項目のみにしてやるプロセスといえます。
ここでは、関数従属とキーとその関係について説明しました。これで正規化を学ぶための基本的な考え方の習得は完了です。