外部キーとは?がいぶキー
外部キーとは、他の表(または自分自身)の主キーか一意キーを参照する属性の集合で、参照先に実在する値かNULLしか取れないという参照制約を課す。この制約により、存在しない顧客の受注や、受注が残ったままの顧客の削除を防げる。参照先を削除・更新したときの動作はCASCADEやRESTRICTなどで指定する。
最終更新:2026-10-06
この語が出る過去問を解く →背景
関係モデルには表と表をつなぐポインタが無く、関連は「同じ値を持っていること」だけで表現される。制約として宣言しないまま運用すると、参照先を消したあとに参照元が行き場のない行として残り、結合すると消えるという不整合が静かに広がる。参照関係を宣言しておけば、DBMSが更新のたびに検査してくれる。試験では概念データモデルの関連が、関係スキーマで外部キーに落ちる過程が問われる。
具体例
PostgreSQLで受注表に FOREIGN KEY (顧客コード) REFERENCES 顧客(顧客コード) ON DELETE RESTRICT と宣言すると、受注が残っている顧客の行は削除できなくなる。CASCADEに変えれば、顧客の削除に連動して受注も消える。
試験での引っ掛け
E-R図では外部キーを持つ側が常に「多」側になる。向きを取り違えると関係スキーマの導出が丸ごとずれる。また外部キーの列は既定でNULLを許すので、必ず参照先を持たせたいならNOT NULLを併せて指定する。
関連用語
出た過去問
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5(IPA)
関係データベースの表を設計する過程で、A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち、適切…
正解:A表とB表の対応関係が1対1の場合、列aをB表に追加して外部キーとしてもよいし、列bをA表に追加して外部キーとしてもよい。
要点:1対1は外部キーの置き方が自由、多対多は連関表が必須
1対1の対応関係は、どちらの表に相手の主キーを外部キーとして持たせても一意性が保てるため、どちら向きの実装も可能である。1対多なら「多」側に「1」側の主キーを外部キーとして持たせ、多対多なら両方の主キーをもつ連関表を新設するのが定石である。
出典:平成28年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6(IPA)
四つの表の関係を表すE-R図として、適切なものはどれか。ここで、1―*は1対多の関連を表し、実線の下線は主キーを、破線の下線は外部キーを表す。「医師」表(医師番…
正解:医師*―1診療科1―*診察*―1患者
要点:外部キーを持つ表がE-R図では常に「多」側になる
外部キーをもつ側が「多」になる。医師は診療科コードを外部キーにもつので医師(多)対診療科(1)、診察は診療科コードと患者番号を外部キーにもつので診療科(1)対診察(多)、診察(多)対患者(1)となる。この向きを全て満たすのがイである。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11(IPA)
PCへのメモリカードの取付け状態を管理するデータモデルを作成した。1台のPCは、スロット番号によって識別されるメモリカードスロットを二つ備える。“取付け”表を定…
正解:PRIMARY KEY(PCID, スロット番号), UNIQUE(メモリカードID),
要点:取付け位置は複合主キー、カードの重複はUNIQUEで防ぐ
1台のPCは2つのスロットをもち、スロットごとに1枚のカードが取り付けられるため、PCIDとスロット番号の組が取付けを一意に識別する主キーになる。さらに1枚のメモリカードが同時に複数のスロットへ取り付けられることはないので、メモリカードIDに一意性制約が必要になる。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問2(IPA)
関係データベースの表を設計する過程で、A表とB表が抽出された。主キーはそれぞれ列aと列bである。この二つの表の対応関係を実装する表の設計に関する記述のうち、適切…
正解:A表とB表の対応関係が1対1の場合、列aをB表に追加して外部キーとしてもよいし、列bをA表に追加して外部キーとしてもよい。
要点:1対1は外部キーの向きが自由、多対多は連関表が必要
1対1の対応関係では、どちらか一方の表に相手の主キーを外部キーとして持たせれば対応関係を表現でき、どちらの向きでも一意性が保たれる。1対多では「多」側に「1」側の主キーを置き、多対多では両方の主キーをもつ連関表を新設するのが基本である。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5(IPA)
四つの表の関係を表すE-R図として、適切なものはどれか。ここで、1━*は1対多の関連を表し、実線の下線は主キーを、破線の下線は外部キーを表す。 医師(医師番号[…
正解:医師 *━1 診療科 1━* 診察 *━1 患者
要点:外部キーを持つ側がE-R図の「多」側になる
外部キーを持つ側が「多」になるという原則で判断する。医師は診療科コードを外部キーに持つので医師(多)対診療科(1)、診察は診療科コードと患者番号を外部キーに持つので診療科(1)対診察(多)、診察(多)対患者(1)となる。この向きを全て満たすのがイである。
出典・参考
高度試験 午前I(ITパスポート 相当)のシラバスの9 技術要素 > 55. データベース設計 > (2) データの設計に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。