情報処理試験を勉強していると、「主キーって結局どれを設定すればいいの?候補キーや外部キーとの違いは?」と混乱しがちです。この記事では、主キー(Primary Key)の定義から試験での出題パターンまでを一気に整理します。

対象試験と出題頻度

主キーは、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題されるテーマです。

関係データベースの基本構造に関する問題として定番化しており、候補キー・外部キー・複合キーとの区別が繰り返し問われます。

詳細をクリックして確認
対象試験:
ITパスポート
基本情報技術者
応用情報技術者
出題頻度:
★★★★★(頻出度S)
ランクS(超重要)絶対に覚える必要あり

用語の定義

主キー(Primary Key)とは、一言で言うと

 「関係データベースの表(テーブル)の中で、各行(レコード)を一意に特定するための列(属性)またはその組合せ

のことです。

イメージとしては、学校の出席番号です。

クラスに同姓同名の「田中太郎」が2人いても、出席番号が「5番」と「18番」で異なれば、誰のことか確実に区別できます。

空欄(番号なし)の生徒がいたら出席管理が破綻します。主キーに求められる「値の重複禁止」と「空欄(NULL)禁止」は、まさにこの出席番号のルールと同じです。

🔑 主キーの基本情報

項目 内容
英語名 Primary Key(PK)
分類 関係データベースのキー制約
2つの制約 ① 一意性制約(値の重複を許さない)
② NOT NULL制約(空値を許さない)
設定数 1つの表に対して1つだけ設定できる

解説

関係データベースでは、データを「表」で管理します。しかし、表の中に同じ値を持つ行が複数あると、「どの行を更新すればいいのか」「どの行を削除すべきか」が判断できなくなります。

この問題を防ぐために、「この列の値さえ見れば1行を確実に特定できる」という列を決めておく必要があります。それが主キーの役割です。

主キーの2つの制約

主キーに課される制約は2つだけです。ここだけは確実に押さえてください。

🚫

一意性制約(UNIQUE)

同じ値を持つ行が2つ以上存在してはならない。「従業員番号 001」が2行あったら、どちらの001か特定できない。

🚫

NOT NULL制約

値が空(NULL)の行があってはならない。出席番号が空欄の生徒がいたら、その生徒を指名できない。

キーの種類と関係を整理する

データベースには主キー以外にも複数のキーが登場します。それぞれの関係を階層的に整理すると理解しやすくなります。

🗂 キーの種類と包含関係

スーパーキー

行を一意に特定できる属性の組合せ(冗長な属性を含んでもよい)

候補キー

スーパーキーのうち、余分な属性を含まない最小のもの

主キー(PK)

候補キーの中から1つ選んだもの

代替キー

主キーに選ばれなかった候補キー

▲ スーパーキー ⊃ 候補キー ⊃ 主キー の包含関係

図解:従業員テーブルで見る主キー

具体的なテーブルで主キーの役割を確認します。

📊 従業員テーブルの例

🔑 従業員番号
(主キー)
従業員名 部門コード
E001 田中太郎 D10
E002 田中太郎 D20
E003 鈴木花子 D10

▲ 「従業員名」は同姓同名があり得るため主キーにできない。「従業員番号」なら各行を確実に特定できる。

複合主キーとは

1つの列だけでは行を特定できない場合、複数の列を組み合わせて主キーにすることがあります。

これを複合主キー(複合キー)と呼びます。

📊 履修テーブルの例(複合主キー)

🔑 学生番号
(主キーの一部)
🔑 科目コード
(主キーの一部)
成績
S001 C101 A
S001 C202 B
S002 C101 C

▲ 「学生番号」だけだとS001が2行あり特定できない。「学生番号+科目コード」の組合せで初めて1行を特定できる。

外部キーとの違い

主キーと混同しやすいのが外部キー(Foreign Key / FK)です。両者は役割がまったく異なります。

比較項目 主キー(PK) 外部キー(FK)
目的 自テーブル内の行を一意に特定する 他テーブルの候補キーを参照し、テーブル間を関連付ける
NULL 許されない 許される場合がある
重複 許されない 許される
設定数 1テーブルに1つ 1テーブルに複数設定可能

SQLでの主キー定義

実際のSQL文では、CREATE TABLE文の中でPRIMARY KEY制約を指定します。

CREATE TABLE 従業員 (
    従業員番号  CHAR(4)    PRIMARY KEY,
    従業員名    VARCHAR(20) NOT NULL,
    部門コード  CHAR(3)    REFERENCES 部門(部門コード)
);

▲ PRIMARY KEY を指定すると、一意性制約とNOT NULL制約が自動的に適用される

では、主キーが試験でどのように出題されるか見ていきましょう。

💡 主キーの核心を3行で

・表の各行を一意に特定するための列(またはその組合せ)
・一意性制約(重複禁止)とNOT NULL制約(空値禁止)の2つが課される
・候補キーの中から1つを選んで主キーとし、1テーブルに1つだけ設定する


試験ではこう出る!

主キーは、IP・FE・APのいずれでもデータベース分野の定番テーマです。直接「主キーの性質を選べ」と問う問題から、正規化や参照制約の前提知識として問われるケースまで幅広く登場します。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
IP R4
問65
条件から「従業員」表の主キーを選ぶ問題 ・重複のない属性を主キーに選ぶ
・部門コードは複数従業員が共有するため不適
FE H21秋
午前 問32
主キーの性質として適切なものを選ぶ問題 ・「値が同じ行が複数存在しない」が正解
・「複合主キーは不可」がひっかけ
FE H25秋
午前 問30
主キー制約の条件を選ぶ問題 ・一意性制約とNOT NULL制約の両方を満たす選択肢を選ぶ
AP R5秋
午前 問27
外部キーの説明を選ぶ問題 ・主キー・候補キー・代替キー・外部キーの定義を正確に区別させる出題

📝 IPA試験での出題パターン

パターン1:「主キーの性質・制約を選べ」
4つの選択肢から、一意性制約やNOT NULL制約の内容に合致するものを選ぶ形式。「主キーは検索にしか使えない」「複合主キーは作れない」「数値型は算術演算不可」のような誤りの選択肢が並ぶ。

 

パターン2:「表の条件から主キーを特定せよ」
IP R4問65のように、業務条件から適切な主キーを選ばせる形式。「重複がない」「最小の組合せである」の2点で判断する。

 

パターン3:「キーの種類の定義を正しく選べ」
AP R5秋問27のように、主キー・候補キー・代替キー・外部キーの説明文をそれぞれ区別させる出題。各キーの定義を1文で言えれば対応できる。

 

試験ではここまででOKです。スーパーキーの厳密な定義まで深追いは不要です。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. 関係データベースの主キーに関する記述として、最も適切なものはどれでしょうか?

  • A. 主キーに指定した列は算術演算の対象として使用できなくなる。
  • B. 1つの表に対して主キーを複数設定することで、検索速度を向上させることができる。
  • C. 主キーに指定した列には、値の重複とNULL(空値)が許されない。

正解と解説を見る

正解:C

解説:
主キーには一意性制約(値の重複禁止)とNOT NULL制約(空値禁止)の2つが課されます。この2つの制約によって、表の中の各行を確実に特定できる状態が保証されます。

選択肢Aは誤りです。主キーに数値型の列を指定しても、その列を集計関数や算術演算で使うことは制限されません。選択肢Bも誤りです。主キーは1つの表に対して1つだけ設定するものであり、複数の主キーを設定する機能は存在しません(検索速度の向上にはインデックスを使用します)。


よくある質問(FAQ)

Q. 主キーには連番(オートインクリメント)を使うべきですか?

実務では、業務上の意味を持たない連番(サロゲートキー)を主キーにするケースが多くあります。業務コードの体系変更に影響されない、値の衝突が起きにくいといった利点があるためです。一方、IPA試験では「業務条件からどの属性が主キーになるか」を判断させる問題が主流なので、サロゲートキーの知識が直接問われることはほぼありません。

Q. 候補キーが1つしかない場合、主キーの選び方で迷うことはありますか?

候補キーが1つだけなら、そのまま主キーになります。選択の余地はありません。候補キーが複数ある場合に初めて「どれを主キーにするか」を決める必要があり、選ばれなかった候補キーが代替キーになります。

Q. 主キーとUNIQUE制約はどう違いますか?

どちらも値の重複を禁止する点は同じですが、2つの違いがあります。第一に、主キーはNULLを許さないのに対し、UNIQUE制約はNULLを許容します。第二に、主キーは1テーブルに1つだけですが、UNIQUE制約は複数の列に設定できます。メールアドレスのように「重複は禁止したいが、主キーではない」列にUNIQUE制約を使います。

Q. 正規化と主キーはどう関係しますか?

正規化では、主キーに対する関数従属性を分析してテーブルを分割します。第2正規形では「主キーの一部にのみ従属する列」を別テーブルに切り出し、第3正規形では「主キー以外の列に従属する列」を切り出します。つまり、正規化の各段階は主キーを基準に判断する作業です。IP R6問81やFE R6免除問19でも、正規化の前提として主キーの特定が求められています。