データベースを学ぶとき、必ずといっていいほど登場するのが主キーです。「なんとなく重要そうだけど、何のためにあるの?」と感じている方も多いのではないでしょうか。
実は主キーは、データベースの仕組みの根幹を支える非常に重要な概念です。主キーを理解すれば、外部キーや参照整合性といった関連概念もスッキリ整理できます。この記事では、社員テーブルと注文テーブルの具体例を使いながら、わかりやすくていねいに解説します。
主キーとは?一言でいうと行を一意に特定するための列
主キー(Primary Key)とは、テーブル内の各行(レコード)を唯一無二に識別するための列のことです。
たとえば、次のような社員テーブルがあるとします。
| 社員ID | 氏名 | 部署 |
|---|---|---|
| 001 | 田中一郎 | 営業部 |
| 002 | 佐藤花子 | 経理部 |
| 003 | 山田次郎 | 営業部 |
このテーブルでは、社員IDが主キーです。社員IDを指定すれば、誰の情報かが必ず一つに絞れます。一方、氏名(同姓同名がいる可能性)や部署(同じ部署に複数人いる)では、特定の行を一意に識別できません。
主キーが満たさなければいけない2つの条件
主キーには、必ず守らなければならない条件が2つあります。
条件1:一意性(重複禁止)
主キーの値は、テーブル内で重複してはいけません。社員IDが001と001が2行存在してしまうと、どちらを指しているか分からなくなるためです。
条件2:非NULL性(空値禁止)
主キーの値はNULL(空)であってはいけません。値が空だと識別不能になってしまうためです。
この2つの条件をセットで覚えておきましょう。
| 条件 | 内容 |
|---|---|
| 一意性 | テーブル内で値が重複しない |
| 非NULL性 | 値がNULL(空)でない |
外部キーとは?別のテーブルの主キーを参照する列
外部キー(Foreign Key)とは、別のテーブルの主キーを参照するために使う列のことです。外部キーはテーブル同士をつなぐ役割を持ちます。
次の注文テーブルを追加で見てみましょう。
| 注文ID | 社員ID | 商品名 |
|---|---|---|
| 1001 | 001 | ボールペン |
| 1002 | 003 | ノート |
| 1003 | 001 | 付箋 |
この注文テーブルの「社員ID」列は、社員テーブルの「社員ID(主キー)」を参照しています。この場合、注文テーブルの「社員ID」が外部キーです。
外部キーを設定することで「存在しない社員IDで注文データを登録できない」という制約が生まれます。これを参照整合性といい、データの矛盾を防ぐ重要な仕組みです。
主キーと外部キーでテーブルをつなぐ

2つのテーブルが主キーと外部キーで結ばれる関係をリレーション(関連)と呼び、このような構造を持つデータベースをリレーショナルデータベース(RDB)といいます。
主キーと外部キーの違いまとめ
| 項目 | 主キー | 外部キー |
|---|---|---|
| 役割 | 自テーブルの行を一意に識別する | 別テーブルの主キーを参照・テーブルをつなぐ |
| 値の重複 | 禁止(一意性必須) | 許可される |
| NULLの許可 | 禁止 | 設定によっては許可される |
| 設定できる数 | テーブルに1つ | 複数設定可能 |
複合主キーとは?
主キーは1列だけとは限りません。2つ以上の列を組み合わせて初めて一意性が保たれる場合、その組み合わせを複合主キーと呼びます。
たとえば受講テーブル(学生ID・科目ID・点数)において、学生IDだけでも科目IDだけでも行を特定できませんが、学生ID+科目IDの組み合わせなら特定できます。この場合、学生IDと科目IDが組み合わされて1つの複合主キーになります。
ITパスポート試験での主キー出題傾向と対策
主キーはテクノロジ系のデータベース分野で頻出です。
試験でおさえるべきキーワード
- 主キー:テーブル内の行を一意に識別する列。一意性・非NULL性の2条件を満たす。
- 外部キー:別テーブルの主キーを参照する列。テーブル間を関連付ける。
- 参照整合性:外部キーの値は参照先テーブルの主キーに存在しなければならないというルール。
- 複合主キー:2列以上の組み合わせで一意性を保つ主キー。
- リレーショナルデータベース(RDB):テーブル同士を主キー・外部キーで関連付けるデータベース。
過去問に挑戦!
【問題】
関係データベースにおける主キーの説明として、適切なものはどれか。ア.テーブル内で重複する値を持ってもよい列
イ.テーブル内のレコードを一意に識別できる列または列の組み合わせ
ウ.別のテーブルの列を参照するための列
エ.NULL値を許容する列【正解】:イ
【解説】:主キーはテーブル内のレコードを一意に識別するための列です。重複禁止・NULL禁止の2条件があります。ウは外部キーの説明です。【問題】
外部キーの制約(参照整合性制約)が設定されている場合、次のうち行えない操作はどれか。ア.参照元テーブルに新しい行を追加する
イ.参照先テーブルに新しい行を追加する
ウ.参照先テーブルで、参照元テーブルから参照されている行を削除する
エ.参照元テーブルで、外部キーの値をNULLに更新する【正解】:ウ
【解説】:外部キーによる参照整合性制約があると、参照されている行を参照先テーブルから削除することはできません(孤立した参照が生まれてしまうため)。
まとめ:主キーはテーブルの住所番号
今回は主キーと外部キーについて解説しました。ポイントをもう一度確認しましょう。
- 主キーはテーブル内の各行を一意に識別する列。重複禁止・NULL禁止の2条件がある
- 外部キーは別テーブルの主キーを参照する列で、テーブル同士を関連付ける
- 外部キーがあると参照整合性が保たれ、データの矛盾が防げる
- 2列以上の組み合わせで主キーを設定するのが複合主キー
- 試験では主キーと外部キーの役割の違いと、参照整合性による制約が頻出
主キーはいわばテーブルの住所番号のようなものです。この番号があるからこそ、大量のデータの中から特定の行を確実に引き当てられます。このイメージを忘れずに問題演習に取り組みましょう!
