主キー(primary key)

表の中の1行を一意に特定する列。値の重複と空値が許されない。

もう少し詳しい説明

主キーは、表の中の1行を、これ1つで指し示せる列のことです。

クラスの名簿を思い浮かべてください。「佐藤さんの点数を見せて」と言われたとき、クラスに佐藤さんが2人いたら困ります。どちらの佐藤さんか決められません。

名前で探すと佐藤 ゆう佐藤 ゆう田中 けん会員番号なら100110021003
同姓同名がいると、名前だけでは「どちらの佐藤さんか」を決められません。だから、名前とは別に重複しない番号を1人に1つ振ります。これが主キーの役目です。

だから、名前とは別に重複しない番号を1人に1つ振ります。出席番号、会員番号、社員番号。呼び名とは別に番号を用意するのは、どこの世界でも同じ理由です。

満たすべき条件は2つだけ

主キーに選べる列には、2つの条件があります。

  1. 値が重複しないこと(一意性)— 同じ値が2行あったら、1行に決められない
  2. 空欄がないこと(NOT NULL)— 番号の入っていない行は、指し示しようがない

この2つをあわせて実体整合性と呼びます。どちらか片方でも崩れると、表が表として機能しなくなります。

1つの列では足りないとき

1つの列だけでは決まらない表もあります。

たとえば注文の明細表。「注文番号」だけでは、同じ注文の中に何行もあるので決まりません。そこで「注文番号+明細行番号」の組み合わせを主キーにします。これを複合キーと呼びます。

候補が複数あるとき

行を一意に決められる列の組み合わせは、1つの表に複数あることがあります。社員の表なら、社員番号でも、メールアドレスでも決まるかもしれません。

こうした「決められる候補」を候補キーと呼び、その中から設計者が1つ選んだものが主キーです。選ばれなかったほうは代替キーと呼ばれます。

意味のない番号をあえて使う

会員番号のように業務で使う番号をそのまま主キーにすると、業務の都合で番号の付け方が変わったときに困ります。

そこで、意味を持たないただの連番を新しく用意して主キーにすることがあります。これをサロゲートキー(代理キー)と呼びます。外の都合に振り回されなくなる、というのが利点です。

索引は結果であって条件ではない

多くのデータベースでは、主キーに指定すると索引(インデックス)が自動的に作られます。

ただしこれは、重複していないかを速く確かめるための都合であって、主キーの条件ではありません。「索引があるから主キー」ではないという点が、試験の引っかけになります。

試験ではこう出る

科目A(旧・午前)のデータベース分野で、正規化とセットで出る基本用語です。多いのは、表を示して「主キーとして適切な列はどれか」を選ばせる形と、主キーが満たすべき条件そのものを問う形です。応用情報では、複数の列を組み合わせた複合キーや、候補キーとの区別まで踏み込んで問われます。「重複しない」「空値を許さない」の2点を押さえれば大半は解けます。 応用情報では、E-R図から表を設計させる問題の中で複合キーや候補キーの判断が問われます。

関連する用語

候補キー
一意に特定できる列の組み合わせ。複数あってよく、その中から1つ選んだものが主キー
複合キー
複数の列を組み合わせた主キー。1列では一意にならない表で使う
外部キー
他の表の主キーを指す列。重複してよく、空欄を許すこともある
UNIQUE制約
重複を禁止する決まり。実装によっては空欄を許す点が主キーと違う
インデックス
検索を速くする索引。主キーに付くことが多いが、主キーの条件ではない
正規化
同じ事実を1か所にだけ書くよう表を分ける設計

ミニクイズ

関係データベースで、ある列を主キーに設定するために満たしていなければならない条件として、最も適切なものはどれか。

正解は 4番:値が重複せず、空値(NULL)も入っていないこと

行を1つに特定するための列なので、同じ値が2行あれば特定できませんし、空欄があればその行を指し示せません。この2つをあわせて実体整合性と呼びます。他の表の主キーを参照するのは外部キー、索引はインデックスの話で、どちらも主キーの条件ではありません。主キーには索引が自動で作られる実装が多いのですが、それは結果であって条件ではない、という点が引っかけになります。

間違えた用語の復習リストを見る →

最終更新:2026-09-14