リレーショナルデータベース管理システムでは、一意キーは候補キーです。リレーションのすべての候補キーは、リレーションのレコードを一意に識別できますが、そのうちの 1 つだけがリレーションの主キーとして使用されます。残りの候補キーは、リレーション内のレコードを一意に識別できるため、一意キーと呼ばれます。一意キーは複数の列で構成できます。一意キーは代替キーとも呼ばれます。一意キーは、リレーションの主キーの代替です。SQL では、重複を防ぐために一意キーにUNIQUE制約が割り当てられます (一意列では重複エントリは無効です)。代替キーは、単一テーブルの選択やWHERE句でのフィルタリングを行う場合に主キーのように使用できますが、通常は複数のテーブルを結合するために使用されません。
キーは、データベースの利用者やアプリケーションソフトウェアがデータベーステーブル内の情報を識別、アクセス、更新するための手段を提供します。1つのテーブルには複数のキーが存在する場合があります。例えば、従業員テーブルでは、従業員番号とログイン名はそれぞれ一意です。テーブルにおけるキー制約(一意性制約)の適用は、データベースのデータ整合性機能の一つです。DBMSは、重複するキー値が発生するような更新を防ぎ、テーブルが常に一意性に関する望ましいルールに準拠することを保証します。したがって、データベース設計時に適切なキーを選択することは、データベースの整合性を確保する上で重要な側面となります。
リレーショナルデータベースのテーブルには、1つ以上の使用可能な一意キー(正式には候補キーと呼ばれる)が存在する場合があります。テーブルごとに、これらのキーのうち1つを主キーとして指定できます。その他のキーは代替キーと呼ばれます。
どのキーも、1つ以上の属性で構成できます。たとえば、社会保障番号は従業員を表す単一の属性キーとなり得ます。フライト番号と日付の組み合わせは、予定されているフライトを表す2つの属性からなるキーとなり得ます。
データベースのモデリングと実装では、いくつかの種類のキーが使用されます。
最も基本的な定義では、「キーは一意の識別子である」[ 1 ]なので、一意のキーは重複表現です。元のエンティティ内にあるキーは、そのエンティティ内で一意です。別のエンティティに移行するキーは、設計と他のテーブルでの使用方法に応じて、一意である場合とそうでない場合があります。外部キーは、別のテーブルの主キーになることがあります。たとえば、PersonID が Employee テーブルの EmployeeID になる場合があります。この場合、EmployeeID は外部キーと一意の主キーの両方であり、テーブルは 1:1 の関係になります。Person エンティティに生物学的な父親 ID が含まれている場合、父親には複数の子供がいる可能性があるため、父親 ID は一意であるとは期待されません。
以下は、主キーが関連テーブルの外部キーになる例です。IDがAuthorテーブルからBookテーブルに移行されます。
著者テーブルスキーマ:著者(ID 、氏名、住所、生年月日)書籍テーブルスキーマ:書籍(ISBN 、著者ID 、タイトル、出版社、価格)ここでは、IDは「Author」テーブルの主キーとして機能するだけでなく、 「Book」テーブルの外部キーとしても機能します。外部キーは、このサンプルデータベース内の関連する2つのテーブル間のリンク、つまり接続の役割を果たします。
リレーショナルデータベースでは、候補キーはデータベーステーブル内の各データ行を一意に識別します。候補キーは、単一のデータベーステーブル内の単一の列、または複数の列で構成されます。NULL値は使用されないため、データベーステーブル内の異なる2つの行またはデータレコードが、候補キー列において同じデータ値(またはデータ値の組み合わせ)を持つことはできません。データベーステーブルの設計によっては、複数の候補キーを持つことができますが、主キーとして指定できる候補キーは最大で1つです。
キー制約は、任意の時点におけるテーブル内のタプルの集合に適用されます。キーは、テーブルに格納される可能性のあるすべてのタプルのインスタンス全体において必ずしも一意の識別子である必要はありませんが、データベーステーブル内で重複を許可しないというデータ整合性ルールを意味します。キーの例としては、社会保障番号、ISBN、車両登録番号、ユーザーログイン名などが挙げられます。
原則として、外部キーはどのキーにも参照できます。一部のSQL DBMSでは、外部キー制約は主キーに対してのみ設定できますが、ほとんどのシステムでは、外部キー制約によってテーブルの任意のキーを参照できます。
SQLにおけるキーの定義: