主キー(primary key)
主キーとは
主キー(英:primary key、略:PK)とは、関係データベースのテーブル内で行(レコード)を一意に特定するための項目(カラム)のことです。
テーブルには、大量のデータが保存されています。その大量データの中から、行(レコード)を特定するには「鍵となる情報」が必要です。それが主キーです。
例えば、次のようなテーブルがあるとします。このテーブルの主キーは「社員番号」であり、「社員番号」がわかればデータを一意に識別することができます。

社員番号を主キーとしているため、テーブル内に同じ社員番号を持つの社員を登録することはできません。(一意制約)
このように「社員番号」や「製造番号」といった重複しないユニークな値を主キーとして扱います。また一意となる項目がない場合は、一意性を確保するために「通し番号」のような項目(カラム)を新たに設ける場合もあります。
複合キー
1つの項目ではなく、複数の項目を主キーとして組み合わせデータを一意に識別することもできます。
このように、主キーを複数の項目の組み合わせとして定義することを「複合キー」(複合主キー)といいます。
例えば、次のようなテーブルがあるとします。

上記のようなテーブルでは、1つの項目でデータを一意に識別することができません。(学年は重複する、組も重複する、出席番号も重複する、名前は同姓同名がいる可能性がある)
このような場合は、一意性を確保するために「通し番号」のような項目を新たに設けるか、複合キーを使用するかのどちらかです。
上記の例では「学年」「組」「出席番号」を主キー(複合キー)とすることで、データを一意に識別しています。
整合性制約
整合性制約とは、テーブルに格納されているデータの整合性を保つために定められた制約のことです。
主キーの項目(カラム)には、次の制約が課せられます。
制約 | 説明 |
一意制約 | データに重複がなく、必ず一意であること。主キーの項目(カラム)に同じデータが登録された場合、この一意制約でエラーとなる。 |
NOT NULL制約 | NULLを許可しない。主キーの項目(カラム)にNULLが登録された場合、このNOT NULL制約でエラーとなる。 |
