レコードを一意に識別できる主キーの候補となる列の集合。
候補キーとは、レコードを一意に識別できる、主キーの候補となる列(または列の組み合わせ)です。「一意に識別できる」とは、その値を指定すれば対象の行がただ1つに決まる、という意味です。
ポイントは、候補キーは1つの表に複数あってよいことです。たとえば社員表では、社員番号でもマイナンバーでも、それぞれ1人に特定できます。さらに、候補キーには余分な列を含まない(これ以上減らせない最小の組み合わせである)という条件もあります。
身近な例で考えると、クラス委員に立候補できる人たちに似ています。委員になる資格のある人(候補キー)が何人かいて、その中から正式な委員(主キー)を1人選ぶ、というイメージです。上の図解では、候補キーの中から主キーが選ばれる包含関係を示しています。
主キーは、候補キーの中から代表として1つ選んだものです。候補キーが複数あっても、表で「正式な識別列」として使うのは1つに決めます。
関係を整理すると次のようになります。
・候補キー:一意に識別できる列(複数あってよい)
・主キー:候補キーから1つ選んだ正式な識別列(表に1つだけ)
・代替キー:候補キーのうち主キーに選ばれなかったもの
どの候補キーを主キーにするかは設計者が決めます。一般には短くて扱いやすく、変わりにくい列(社員番号など)を選びます。マイナンバーのように扱いに注意が必要な情報は、識別力はあっても主キーには選ばないことが多いです。身近に言えば「資格者の中から、いちばん呼びやすい人を委員長に選ぶ」ようなイメージです。
スーパーキーとは、レコードを一意に識別できる列の集合のことです。候補キーとよく似ていますが、スーパーキーは余分な列を含んでいてもよい点が違います。
たとえば社員番号だけで1人に特定できるなら、「社員番号+氏名」も一意に識別できるのでスーパーキーです。しかし氏名は識別には不要な余分な列です。
・スーパーキー:一意に識別できる列の集合(余分を含んでよい)。例:社員番号+氏名
・候補キー:スーパーキーから余分な列を取り除いた、これ以上減らせない最小のもの。例:社員番号
つまり、候補キーはスーパーキーの中でも一番ぜい肉をそぎ落とした最小のものです。身近な例で考えると、家を特定するのに「住所+表札の色」でも特定できますが(スーパーキー)、表札の色は不要で「住所」だけで十分(候補キー)、というイメージです。範囲の広い順に「スーパーキー ⊃ 候補キー ⊃ 主キー」と覚えると整理しやすいです。
候補キーは1つの列だけとは限りません。複数の列を組み合わせて初めて一意に識別できる場合、その列の組み合わせ全体が候補キーになります。これを複合候補キーと呼びます。
上の例は「受講表」という表です。
・学生IDだけでは、同じ学生が複数の科目を受講しているので1行に特定できません(S1が2行ある)
・科目IDだけでは、同じ科目に複数の学生がいるので1行に特定できません(K01が2行ある)
・学生ID+科目IDの組み合わせなら、かならず1行に特定できます
つまり、この表では「学生IDと科目IDの組み合わせ」が候補キー(そして主キー)になります。「この表の行を1つに特定するには最低限どの列が必要か?」を考えることが、候補キーを見つけるコツです。どの列も省けないなら、それが複合候補キーです。
候補キーは表のデータを見れば機械的に手順で見つけられます。試験では「次の表の候補キーをすべて答えよ」という問題がよく出るので、手順を覚えておくと確実です。
ステップ 1: 各列が単独で一意かを確認する
表のデータを縦に見て「同じ値が 2 行以上に現れていないか」をチェックします。すべての行で値が違っていれば、その列は単独で候補キーになれます。たとえば社員表の「社員番号」「マイナンバー」のような列です。
ステップ 2: 単独で一意な列がなければ「組み合わせ」を試す
受講表のように「学生 ID」「科目 ID」がそれぞれ単独では重複してしまう場合、2 つ以上の列を組み合わせて1 行に絞り込めるかを試します。「学生 ID+科目 ID」のような複数列ペアが候補キーになります(複合候補キー)。
ステップ 3: 余分な列を取り除いて最小化する
組み合わせを 1 列ずつ取り除いてみて、取り除いても一意なら、その列は余分だった証拠です。最後まで取り除けなくなった組み合わせが候補キーです。たとえば「社員番号+氏名」は一意ですが、氏名を抜いた「社員番号」だけでも一意なので、氏名は余分。最終的に「社員番号」が候補キーです。
注意:データだけでは判断できない場合もある。たとえば「現在の社員リスト」では氏名が全員違っても、将来同姓同名が入社する可能性があります。「業務ルール上、その列の値は将来も絶対に重複しないか?」まで含めて考えることが、実務での候補キー選定のコツです。試験ではこの点は表の前提条件として書かれているので、その指示に従って判定します。