最終更新日:2026年9月23日
fe fe-technology database
まず結論
主キー(PRIMARY KEY)は、表の中の1行を一意に識別するためのキーです。
基本情報技術者試験では、まず次の2つを押さえます。
主キー
├─ 同じ値を重複させない
└─ NULLにできない
つまり、主キーを見れば、どの行なのか一つに決まることが重要です。
また、主キーは必ず1列とは限りません。複数の列を組み合わせた複合主キーも作れます。
直感的な説明
社員表を考えてみます。
| 社員番号 | 氏名 | 部署 |
|---|---|---|
| 1001 | 山田 | 設計 |
| 1002 | 鈴木 | 営業 |
| 1003 | 佐藤 | 設計 |
社員番号を主キーにすると、1002を見れば鈴木さんの行だと一つに決まります。
同じ社員番号が複数あると、社員番号だけでは行を一意に特定できません。また、主キーがNULLでも、その行を識別する値がありません。
そのため、主キーには重複もNULLも認められません。
定義・仕組み
主キーの役割
主キーは、その表にある各行を一意に識別します。
主キーの値
↓
表の中の1行が決まる
関係データベースの基本については、先に関係データベースとは?を確認すると理解しやすくなります。
一意性とNULL
主キーの値は重複できず、NULLにもできません。
重複しない
+
NULLではない
↓
主キーで行を一意に識別
複合主キー
1列だけでは一意に識別できない場合、複数列を組み合わせて主キーにできます。
| 注文番号 | 商品番号 | 数量 |
|---|---|---|
| 1001 | A01 | 2 |
| 1001 | A02 | 1 |
| 1002 | A01 | 3 |
注文番号だけでは重複し、商品番号だけでも重複します。しかし、注文番号+商品番号の組合せなら各行を識別できます。これが複合主キーです。
科目Aでどう出る?
主キーの説明を選ぶ問題では、同じ主キー値を持つ行が複数存在しないという表現が重要な手掛かりです。
主キー
→ 行を一意に識別
→ 同じ主キー値が複数あるのはNG
一方、次の説明は主キーの性質ではありません。
| 選択肢の考え方 | 判断 |
|---|---|
| 主キーを条件にしないと検索できない | 誤り。主キー以外でも検索できる |
| 数値型を主キーにすると算術演算できない | 誤り。キーの役割とデータ型は別 |
| 同じ主キー値の行が複数存在しない | 正しい |
| 複数列から主キーを構成できない | 誤り。複合主キーがある |
試験では、検索方法やデータ型ではなく「行を一意に識別できるか」に戻って判断します。
どんな場面で使う?
社員、商品、注文などのデータでは、どの行を操作するのかを確実に識別する必要があります。
社員番号 → 社員を識別
商品番号 → 商品を識別
注文番号 → 注文を識別
また、別の表から主キーを参照する列が外部キーです。
部署表
部署番号 ← 主キー
社員表
部署番号 ← 外部キー
主キーは1行を識別し、外部キーは表どうしを関連付ける、と分けて考えます。
よくある誤解・混同
主キーは検索専用の列
違います。主キーの本質は、表の中の行を一意に識別することです。主キー以外の列でも検索できます。
主キーは必ず数値
違います。データ型が数値であること自体は主キーの条件ではありません。
主キーは必ず1列
違います。複数列の組合せで一意に識別する複合主キーもあります。
重複しなければNULLでもよい
主キーではNULLも認められません。
主キー
→ 重複不可
+
NULL不可
主キーと外部キーは同じ
役割が違います。
主キー
→ 自分の表の行を一意に識別
外部キー
→ 表どうしを関連付ける
原典・一次情報で確認する
関係モデルの原典は、E. F. Coddが1970年に発表した論文 “A Relational Model of Data for Large Shared Data Banks” です。
基本情報技術者試験の出題範囲は、IPAのシラバスから確認できます。
試験では、主キーは行を一意に識別するという役割から各性質を判断できるようにします。
まとめ(試験直前用)
- 主キー → 表の中の1行を一意に識別する
- 同じ主キー値は重複できず、NULLにもできない
- 複数列を組み合わせた複合主キーも作れる
迷ったら、
この値(または値の組合せ)で
1行だけに決まる?
↓
主キーの中心的な役割
と考えます。