データベースマネジメント:正規化(最終更新:2015/12/06 16:33:45 JST)
関係データベースで重要な概念であるキーおよび関係データベースの分解に相当する正規化について見ていく.
この章の内容
関係データベースでは複数のテーブルでデータを管理する.このときテーブル中で個々のタプルを区別したり,他のテーブルとの結びつきを表したりする働きを持つフィールド,つまり列が存在する.これらのフィールドをキーと呼ぶ.以下ではキーについて用途別に説明していく.
あるフィールド,列,つまり項目が決まれば,他のフィールドが定まるものを候補キー(candidate key)と呼ぶ.教科書32ページの[商品]テーブルの場合,<商品コード>フィールドがわかれば,どのレコード,タプル,つまり行かが一意に定まる.もっと身近な例を挙げれば,[学生情報]テーブルで,<学籍番号>フィールドが候補キーとなる(というか,候補キーとして使えるように人工的に作られている).なお,候補キーの各列の値が重複することはない.また候補キーは1つのテーブルに複数あってもよい.
通常,候補キーからテーブルのデータを識別するためのメインとなるキーを1つ選んで主キー(primary key)とする.主キーはレコード内で重複することは許されないだけでなく,通常はヌルも許されない.通常主キーには下線が引かれる.
主キー以外の候補キーを代替キー(alternate key)と呼ぶ.代替キーは代理キーと呼ばれることもある.
複数のフィールドを組み合わせることによってキーとして機能するものを複合キー(composite key)と呼ぶ.複合キーは連結キーと呼ばれることもある.主キーとして機能する複合キーは複合主キー(composite primary key)と呼ばれる.
例えば[郵便番号住所]テーブルが,<郵便番号>,<都道府県名>,<市区町村・町名>の3つのフィールドを持つとする.このとき,
郵便番号 | 都道府県名 | 市区町村・町名 |
---|---|---|
658-0072 | 兵庫県 | 神戸市東灘区岡本 |
663-8171 | 兵庫県 | 西宮市甲子園一番町 |
リレーショナルデータベースの特徴はデータを単一のテーブルに格納するのではなく,複数のテーブルに分割して格納することである.このとき,テーブルとテーブルの関連付け(relationship)を行うために使用されるのが外部キーである.外部キー(forign key)は,別のテーブルの主キーを参照(reference)するフィールドである.教科書34ページの図の例では,[売上]テーブルの<得意先コード>フィールドが[得意先]テーブルの主キーである<得意先コード>を参照しているので,外部キーとして機能している.
なお外部キーと参照先の主キーのフィールド名は同一である必要はない.また外部キーを明示するためフィールド名に破線を引いて表す.
[時間割]テーブルの<担当者コード>フィールドが,[教員]テーブルの主キーである<教員コード>を参照しているので,外部キーとなる.
|
|