候補キー
出典: フリー百科事典『ウィキペディア(Wikipedia)』
候補キー(こうほキー)は、スーパーキーのうち、既約(irreducible)の形のものをいう。
既約とは、ここでは、それを構成する属性(列)のどれか一つでも欠ければ一意性が確保できなくなること、つまり冗長な属性を含まないことをいう。最小(minimal)ともいう。
要するに、組(行)の識別のために必要な、属性又はその集合が候補キーである。候補キーは、組(行)の「アドレス」だと考えることもできる。
候補キーという名は、それが主キーとして選ばれる候補であるところから来ている。
一つのリレーション(関係、表)には、リレーションというものの定義上、少なくとも一つ候補キーが存在する。一つのリレーションに候補キーが二つ以上存在することもある。
例えば、市町村(市町村ID, 市町村名, 都道府県名)というリレーションの場合、市町村ID と {市町村名, 都道府県名} が候補キーである。なお、市町村名には多少の重複があるため(府中市など)、市町村名は単独では候補キーにならない。
NULLを含む候補キーというものを認めるかについては諸説あるが、一説には、主キーには認められないが候補キーには認められるという。ただ、NULLが不明を表すとすると、この立場は上記の定義とは矛盾する。一方で、候補キーに限らず、属性の値としてNULLを含むならば、定義上それはそもそもリレーションでないとする立場もある。
なお、SQLにおけるCREATE UNIQUE INDEX文で指定される一意性制約は、厳密には候補キーとは別の概念であるから、一意性制約にNULLを許すことができるものがあることは、ここでの議論に必ずしも影響しない。