Db2 のキー

キー とは、1 つの列または列の順序付きコレクションであり、表、索引、または参照制約の記述の中で認識されます。 キーは、リレーショナル・データベースの中の表構造にとって不可欠なものです。

キーは、表の各レコードが一意的に認識されるためにリレーショナル・データベースでは重要であり、参照整合性の設定と実施が可能となり、表の間の関係を確立します。 同一の列を複数のキーの一部として使用できます。

複合キーとは、同じ表の複数の列が一定順序に並んだ集合です。 列の順序付けは、表内の実際の順序によっては制約されません。 という用語は、複合キーに関して使用された場合は、複合値を意味します。 例えば、次の規則を考えてみます。 外部キーの値は、主キーの値と等しくなければなりません。 この規則は、外部キーの値の各コンポーネントは、主キーの値の対応するコンポーネントと等しくなければならない、ということを意味します。

Db2 複数の種類のキーに対応しています。

ユニーク・キー

ユニーク制約とは、キーの値は、ユニークである場合にのみ有効であるという規則です。 固有値を持つように制約されたキーが、ユニーク・キーです。 Db2 LOADユーティリティの実行中、およびINSERT、UPDATE、またはMERGEステートメントを使用してデータを追加または変更するたびに、 一意のインデックスを使用して制約を強制します。 ユニーク・キーはすべて、ユニーク索引のキーです。 ユニーク・キーは、CREATE TABLE または ALTER TABLE ステートメントのいずれかの UNIQUE 文節を使用して定義できます。 1 つの表に任意の数のユニーク・キーを持つことができます。

ユニーク・キーの列に NULL 値を含めることはできません。

主キー

主キーとは、特殊なタイプのユニーク・キーで、NULL 値は使用できません。 例えば、DEPT 表の DEPTNO 列が主キーです。

1 つの表が複数の主キーを 持つことはできません。 主キーはオプションで、CREATE TABLE または ALTER TABLE ステートメントで定義できます。

主キーに基づいたユニーク索引を、1 次索引 と呼びます。 CREATE TABLE 文または ALTER TABLE 文で主キーが定義されている場合、 Db2 は自動的に主インデックスを作成します。

ALTER TABLE ステートメントで主キーを定義する際に、主キーの列に一意インデックスがすでに存在する場合、 Db2 が新しい機能モードで動作し、テーブルスペースを暗黙的に作成すると、この一意インデックスが主インデックスとして指定されます。

親キー

親キーは、参照制約の親表の主キーまたはユニーク・キーのどちらかです。 親キーの値は、制約内の外部キーの有効値を判別する。

外部キー

外部キーとはキーの一種で、CREATE または ALTER TABLE ステートメントで参照制約の定義に指定されます。 外部キーは特定の親キーを参照または、親キーに関連付けられます。

外部キーは、他のタイプのキーとは異なり、基礎となる列の索引を必要としません。 表には外部キーなしか、または 1 つ以上の外部キーを持つことができます。 複合外部キーの値は、値のいずれかの部分が NULL であれば、NULL になります。

下図には、DEPT 表と EMP 表内の一部の列の関係を記載してあります。

図1: DEPT 表と EMP 表の間の関係
図の説明の開始 DEPT 表と EMP 表が、各表ごとの主キーと外部キーを示す矢印を使って、絵で示してあります。 図の説明の終わり。
図の注釈 :各テーブルには主キーがあります
  • DEPT 表の DEPTNO
  • EMP 表の EMPNO

各表には外部キーがあり、この表の間で以下の関係を確立しています。

  • EMP 表の DEPT 列に対する外部キーの値は、DEPT 表の DEPTNO 列の値と同じです。
  • DEPT 表の MGRNO 列に対する外部キーの値は、社員が管理者の場合は EMP 表の EMPNO 列の値と同じです。

行間の特定の関係を確認するには、部門 C01 と従業員番号 000030 の陰影が付けられた行が共通の値をどのように共有するかに注目してください。