データベース基本概念

候補キー こうほきー

主キー一意性最小性関係データベース正規化スーパーキー
候補キーについて教えて

簡単に言うとこんな感じ!

「この列(または列の組み合わせ)さえあれば、どの行かをピタリと特定できる!」という資格を持った列のことだよ。社員番号でも、メールアドレスでも、どちらか1つで本人を特定できるなら、どちらも「候補キー」なんだ!


候補キーとは

候補キー(Candidate Key)とは、リレーショナルデータベース(表形式のデータベース)のテーブルにおいて、各行を一意に識別できる列または列の組み合わせのうち、最小限の列だけで構成されているもののことを指します。

テーブルには「どの行かを一意に特定できる列」が複数存在することがあります。たとえば「社員テーブル」であれば、「社員番号」でも「メールアドレス」でもどちらか1つで社員を特定できる場合、どちらも候補キーです。この中から実際に主キーとして採用されるものを1つ選び、残りは代替キー(Alternate Key)と呼びます。

候補キーを正しく把握することは、テーブル設計や正規化(データの重複や矛盾をなくす整理作業)を進めるうえで非常に重要な出発点となります。候補キーが曖昧なまま設計を進めると、同じデータが別々の形で重複登録されるなどのトラブルが発生しやすくなります。


候補キーの2大条件:一意性と最小性

候補キーとして認められるには、以下の2つの条件を両方とも満たす必要があります。

条件意味違反するとどうなるか
一意性(Uniqueness)その列(または組み合わせ)の値が、テーブル内で重複しない同じ値の行が2つ存在してしまい、どちらを指しているか分からなくなる
最小性(Minimality)一意性を保つために必要な最小限の列しか含まない余分な列を含んでいるものは「スーパーキー」と呼ばれ、候補キーではない

覚え方:「一意に・最小で・特定できる=候補キー」

語呂合わせとして「い(一意)さい(最小)こう(候補キー)」と覚えてみましょう。一意性・最小性・候補キーの3点セットです。

候補キー・スーパーキー・主キーの関係

全ての列の組み合わせ(スーパーキー候補)
├── 一意性あり → スーパーキー
│    ├── さらに最小性あり → 【候補キー】 ← ここに注目!
│    │    ├── 採用された1つ → 主キー(Primary Key)
│    │    └── 採用されなかった残り → 代替キー(Alternate Key)
│    └── 最小性なし(余分な列を含む) → スーパーキーのみ
└── 一意性なし → キーになれない

歴史と背景

  • 1970年 — エドガー・F・コッド(IBM)が関係モデル(リレーショナルモデル)を提唱。テーブルの各行を識別するキーの概念が生まれる
  • 1972年頃 — コッドがキーの理論を精緻化。「候補キー」という概念が明確に定義され、主キー選択の前提となる
  • 1980年代 — Oracle・DB2・SQL Serverなどの商用RDBMSが普及。候補キーの考え方は実装における制約(UNIQUE制約・PRIMARY KEY制約)として具体化
  • 現在NoSQLやクラウドDBでも「どうやって行を一意に特定するか」という問題は不変。候補キーの概念はデータ設計の基礎として普遍的に使われ続けている

候補キー・主キー・代替キー・スーパーキーの比較

4種類のキーがどういう関係にあるのかを整理します。

キーの種類一意性最小性主キーとして使われる説明
スーパーキー❌(余分な列を含みうる)一意性だけ満たす。候補キーの上位概念
候補キー候補の中から1つ選ぶ一意性と最小性の両方を満たす
主キー(Primary Key)✅(1つだけ選ばれる)候補キーの中から実際に採用されたもの
代替キー(Alternate Key)❌(選ばれなかった)主キーにならなかった候補キー。UNIQUE制約で管理

社員テーブルの具体例

社員テーブル
┌──────────┬──────────────────────────┬──────────────┬──────┐
│ 社員番号 │ メールアドレス            │ 氏名         │ 部署 │
├──────────┼──────────────────────────┼──────────────┼──────┤
│ E001     │ tanaka@example.com        │ 田中 太郎    │ 営業 │
│ E002     │ suzuki@example.com        │ 鈴木 花子    │ 総務 │
│ E003     │ sato@example.com          │ 佐藤 一郎    │ 開発 │
└──────────┴──────────────────────────┴──────────────┴──────┘

候補キー① → 社員番号(重複なし・これだけで特定できる)
候補キー② → メールアドレス(重複なし・これだけで特定できる)
非キー   → 氏名(同姓同名がありうる)、部署(複数人が同じ部署)

この場合、「社員番号」を主キーに採用した場合、「メールアドレス」は代替キーとなり、データベース上ではUNIQUE制約を設けて一意性を保証します。

候補キーと主キーの対応関係(SVG図解)

候補キーと主キー・代替キーの関係 スーパーキー(一意性あり) 候補キー(一意性 + 最小性あり) 主キー (採用された1つ) 例: 社員番号 PRIMARY KEY制約 代替キー (選ばれなかった候補) 例: メールアドレス UNIQUE制約で管理 or ※ 候補キーはスーパーキーの中でも最小性を満たすもの

関連する規格・RFC

規格内容
ISO/IEC 9075(SQL標準)SQLにおけるPRIMARY KEY制約・UNIQUE制約を規定。候補キーの概念がこれらの制約として実装されている

関連用語

  • 主キー — テーブルの各行を一意に識別するために実際に採用された候補キー
  • 外部キー — 他のテーブルの主キーを参照し、テーブル間の関係を表す列
  • スーパーキー — 一意性を持つ列の組み合わせ全般。候補キーの上位概念
  • 正規化 — テーブル設計を整理してデータの重複・矛盾をなくす手法。候補キーの把握が前提
  • 一意制約 — 列の値が重複しないことをDBMSが保証する制約。代替キーに適用する
  • 関係モデル — コッドが提唱したデータベースの理論的基盤。候補キーはここで定義された
  • 複合キー — 複数の列を組み合わせて1つのキーとするもの。候補キーになり得る