候補キー 【candidate key】
概要
候補キー(candidate key)とは、リレーショナルデータベース(RDB)のテーブル内で、すべてのレコード(組/行)を一意に識別することができる項目(列/カラム)の組み合わせ。この中から一つが「主キー」(primary key)に選ばれる。すべてのレコードで値が異なることが保証されるような列や、値の組み合わせに重複が無い複数の列が該当する。例えば、通し番号や識別番号(ID)のように、データの性質上、重複しないことが明らかな列は単体で候補キーとなることができる。
また、例えば、全社の各支店の課を一件ずつ登録した「課名」テーブルで「支店名」と「課名」は単体ではどちらもレコード間で重複しうるが、両者の組み合わせ(○○支店××課)は一意である。このような複数の列の複合をキーとすることもできる。
複合キーの場合、厳密には「いずれか一つが欠けても一意にならなくなる列の組み合わせ」のみ候補キーとなることができる。このような性質を「既約」であると言う。例えば、支店名と課名の他に「課長名」を加えても一意だが、これが無くても一意であることは変わらないため候補キーに加えることはできない。
候補キーのうち一つが、実際にレコードの識別に用いられる主キーとして設定される。主キーに選ばれなかった候補キーのことを「代替キー」(alternate key)ということがある(「代替キー」という用語はサロゲートキーを指す場合もある)。候補キーに「値無し」(NULL値)を許容するかは諸説あるが、主キーにNULLは許容されないため、「主キーの候補である」とする立場では許容されないとなる。
(2021.10.20更新)