見出し画像

応用情報 6.2.2 関係データベースのキー

関係データベースでは,表中の行を一意に識別するためのキー(スーパキー,候補キー,主キー)と,別の表を参照し関連づけるための外部キーという概念が設けられています。

スーパキー

表中の行を一意に特定できる属性,あるいは属性の組をスーパキー(super key)といいます。極端な例ですが,表内に同一行が存在しなければ,スーパキーにすべての属性を指定してもかまいません。

候補キー

スーパキーの中で余分な属性は含まない,つまり,行を一意に識別するための必要最小限の属性によって構成されるスーパキーを候補キー(candidate key)といいます。候補キーには,一意性を保証するため同一表内に同じ値があってはいけないという一意性制約が設定されます。

候補キーは1つの表において複数存在する場合があります。たとえば,図6.2.3の社員表では,社員コード,電話番号が候補キーとなります。 

主キー

複数存在する候補キーの中から任意に選んだ1つの候補キーを主キー(primary key),主キーに選ばれなかった残りの候補キーを代理キー(alternate key)といいます。

主キーには,一意性制約の他,実体を保証するため空値(NULL)は許さないという NOT NULL制約が設定されます。この主キーがもつ制約を主キー制約といいます。

外部キー

関連する他の表を参照する属性あるいは属性の組を外部キー(foreign key)といいます。 

2つの表の間に「1対多」の関係がある場合,「多」側の表に「1」側の表の主キーあるいは主キー以外の候補キーを参照する属性をもたせて,これを外部キーとします。これにより,外部キーの値が被参照表(外部キーによって参照される表)に存在することを保証する参照制約が確保できます。

一般に,外部キーは,被参照表の主キーを参照するが,UNIQUE指定された候補キーを参照する場合もある。参照制約については,「6.5.3 その他のDML文」も参照。

なお,複数の表を参照するような場合,表内に複数の外部キーをもつことになります。また外部キーの値は,NOT NULL 制約が定義されていなければ空値(NULL)は許されます。


この記事が気に入ったらサポートをしてみませんか?