キーは、テーブル内の各行を一意に識別するために使用できる列のセットです。
すべてのテーブルには少なくとも1つのキーがあります。テーブルの可能な各キーを特定したとしましょう。これらの各キーは候補キーです。
これらの各キーを調べると、キーは列なし(!)、1つの列、または複数の列で構成されている可能性があり、これらを一緒に検討すると、各行が一意に識別されます。複合キーという用語は、具体的には複数の列で構成されるキーを指します。
SQLでは、1つのキーを選択し、テーブルの他のキーよりも「同等」に扱う必要があると決定されました。このキーは主キーと呼ばれます。他のキーもテーブルで宣言できます。これらは通常、一意の制約と呼ばれます。
(!)SQLでは、列のないキーを宣言することは許可されていませんが、場合によっては便利です(各列が構成情報を表す、単一の行のみを持つ必要があるテーブルを考えてみてください)。
複数のキーを持つテーブルの例として、すべてが複合です。クライアントとカウンセラーが特定の時間に部屋で会う予約システムを想像してみてください。
CREATE TABLE Appointments (
ClientID int not null,
CounsellorID int not null,
RoomID int not null,
AppointmentTime datetime not null
)
このテーブルの候補キーは、{ClientID、AppointmentTime}、{CounsellorID、AppointmentTime}、および{RoomID、AppointmentTime}です。これらの列の組み合わせはいずれも、テーブル内の行を一意に識別するために使用でき、それらはすべて複合キーです。
主キーとしてどちらを宣言するかは、(おそらく)システムの主な「焦点」の私たち自身の解釈に依存します。私たちは主に部屋の使用、またはクライアント、またはカウンセラーに関心がありますか?いずれの場合も、1つを選択し、それを主キーとして宣言します。また、他のキーを一意の制約として宣言することもできれば幸いです。
AppointmentID
または、データベースで使用可能な自動番号付け機能を使用して、サロゲートを使用し、列を宣言することもできます。その場合、それが(非複合)主キーになる可能性があります。ただし、テーブルの他のキーを宣言する必要があります。