【ITパスポート】主キーとは?外部キーとの違いをわかりやすく解説

データベースを学ぶとき、必ずといっていいほど登場するのが主キーです。「なんとなく重要そうだけど、何のためにあるの?」と感じている方も多いのではないでしょうか。

実は主キーは、データベースの仕組みの根幹を支える非常に重要な概念です。主キーを理解すれば、外部キーや参照整合性といった関連概念もスッキリ整理できます。この記事では、社員テーブルと注文テーブルの具体例を使いながら、わかりやすくていねいに解説します。

目次

主キーとは?一言でいうと行を一意に特定するための列

主キー(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商品名
1001001ボールペン
1002003ノート
1003001付箋

この注文テーブルの「社員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列以上の組み合わせで主キーを設定するのが複合主キー
  • 試験では主キーと外部キーの役割の違いと、参照整合性による制約が頻出

主キーはいわばテーブルの住所番号のようなものです。この番号があるからこそ、大量のデータの中から特定の行を確実に引き当てられます。このイメージを忘れずに問題演習に取り組みましょう!

目次