外部キー(foreign key)

別の表の主キーを参照する列。参照先に存在しない値は入れられない。

もう少し詳しい説明

外部キーは、別の表を指し示すための列です。指した先に無い値は入れられません。

通販の注文を思い浮かべてください。注文するとき、商品名を毎回書くのではなく商品番号を指定します。商品そのものの情報は、別に用意された商品一覧のほうに書かれています。

この番号は実在する?注文の表商品番号を書く商品の表商品番号が主キー
注文の側には商品番号だけを書きます。登録しようとした番号が商品一覧に無ければ、その注文は受け付けません。この「参照先に無い値を入れさせない」働きが参照整合性です。

このとき、商品一覧に無い番号では注文できません。存在しない商品を注文したことになってしまうからです。だからシステムは、注文を受け付ける前に商品一覧を照合し、無い番号を弾きます。

この「指した先に無い値を入れさせない」働きを参照整合性と呼びます。

逆向きの制約もある

外部キーの効き目は、もう1つあります。

ある商品を一覧から消そうとしたとき、その商品への注文がまだ残っていると、消させてもらえません。消してしまうと、注文の側に「どの商品か分からない番号」が残ってしまうからです。

この場合の動きは、設計のときに選べます。

選べる動き何が起きるか
拒否する(制限)参照している行がある限り、削除できない。既定はこれ
連鎖して消すその商品を指していた注文もまとめて消える
空欄にする注文側の商品番号を空にする

主キーとは性質が違う

外部キーは主キーの相棒ですが、求められる性質は違います。ここが試験でよく問われます。

一意で空欄なしが求められる主キーとは、まったく逆です。

正規化と表裏の関係

そもそも、なぜ注文に商品番号だけを書くのか。それは同じ事実を1か所にだけ書くためで、これが正規化の考え方です。

ただし表を分けたままでは、ばらばらのデータになってしまいます。分けた表どうしをつなぎ直し、食い違いが起きないよう見張る役目が外部キーです。分けるのが正規化、つなぎ直すのが外部キー、と対で覚えると位置関係がつかめます。

試験ではこう出る

科目A(旧・午前)のデータベース分野で、主キーとの対比で出ます。多いのは、2つの表を示して外部キーに当たる列を選ばせる形と、参照整合性が働いたときに何が起きるかを問う形です。応用情報では、参照されている行を削除しようとしたときの動作(拒否するか、連鎖して消すか)まで踏み込みます。「参照先に無い値は入れられない」が中心で、ここさえ外さなければ解けます。 応用情報では、外部キーが空値を取りうる場面も問われます。

関連する用語

主キー
行を1つに特定する列。外部キーはその主キーを指しに行く側で、向きが逆
正規化
同じ事実を1か所にだけ書くよう表を分ける設計。分けた表をつなぎ直すのが外部キー
参照整合性
指した先に無い値を入れさせない決まり。外部キーが受け持つ働き

ミニクイズ

注文表の「商品番号」列が、商品表の主キーである「商品番号」を参照する外部キーとして定義されている。このとき成り立つこととして、最も適切なものはどれか。

正解は 2番:商品表に存在しない商品番号を、注文表に登録できない

外部キーは、指した先に無い値を入れさせない仕組みで、これを参照整合性と呼びます。同じ商品番号を2回登録できないのは一意性の話で、外部キーは同じ値が何度出てきても構いません(人気商品なら何百件でも注文が入ります)。行が自動で増えることはなく、索引の有無も外部キーの定義とは別の話です。

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

最終更新:2026-09-14