外部キーとは?
外部キーとは、他の表の主キー(または一意キー)を参照することで表と表の関連を表す属性のこと。参照先に存在しない値を持てないという参照整合性制約がDBMSによって保証されるため、アプリ側の実装漏れによる不整合を防げる。主キーと異なりNULLを許し(=どこも参照していない状態を表す)、値の重複も許されるため、多対1の関連を表現できる。参照先の行を削除・更新したときの動作はCASCADE(連鎖)・RESTRICT/NO ACTION(拒否)・SET NULLなどを宣言して選べる。同じ表の主キーを参照する自己参照外部キーもあり、社員表の上司コードのような階層構造を表す。
応用情報技術者試験の過去問では11回出題されています(2016年度〜2025年度)。
がいぶきー
外部キーはどういう意味?
外部キーとは、他の表の主キー(または一意キー)を参照することで表と表の関連を表す属性のこと。参照先に存在しない値を持てないという参照整合性制約がDBMSによって保証されるため、アプリ側の実装漏れによる不整合を防げる。主キーと異なりNULLを許し(=どこも参照していない状態を表す)、値の重複も許されるため、多対1の関連を表現できる。参照先の行を削除・更新したときの動作はCASCADE(連鎖)・RESTRICT/NO ACTION(拒否)・SET NULLなどを宣言して選べる。同じ表の主キーを参照する自己参照外部キーもあり、社員表の上司コードのような階層構造を表す。
外部キーの具体例は?
ヤマト運輸の配送管理のように、配送明細表の「荷物番号」を荷物表の主キーへの外部キーとして宣言しておけば、存在しない荷物番号の明細行は登録できず、荷物を削除するときも明細が残っていれば拒否される(RESTRICT)という制御ができる。
外部キーは試験でどう引っ掛けられる?
主キーとの違いが狙われる。外部キーはNULLも重複も許されるが、主キーはどちらも許されない。参照先は任意の列ではなく主キーまたは一意制約のある列でなければならない点、削除の連鎖が起きるのは参照「される」側を消したときであって参照する側を消したときではない点も、向きを取り違えやすい。
外部キーと関連する用語は?
外部キーが出た過去問は?
出典:平成28年度 春期 応用情報技術者試験 午前 問29(IPA)
次の表において,“在庫”表の製品番号に定義された参照制約によって拒否される可能性がある操作はどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。 …
正解:“在庫”表への行追加
要点:外部キーは参照先に存在しない値の登録を拒否する
参照制約は、外部キーの値が参照先の主キーに存在することを要求する。在庫表に行を追加するとき、製品表に存在しない製品番号を指定すると制約違反となり拒否される。
出典:平成29年度 春期 応用情報技術者試験 午前 問28(IPA)
“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデ…
正解:メーカコードの値が4001以上,4003以下の部品を検索する。
要点:B+木インデックスは範囲検索で最も効果を発揮する
B+木インデックスは値が大小順に並び、葉ノードが順につながっているため、ある範囲に含まれる値をまとめて取り出す範囲検索で効果が大きい。値の種類が多く均一に分散していれば、絞り込まれる行数も少なくて済む。
出典:平成30年度 秋期 応用情報技術者試験 午前 問29(IPA)
“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデ…
正解:メーカコードの値が4001以上,4003以下の部品を検索する。
要点:B+木インデックスは絞り込みの効く範囲・等値検索で効果が大きい。
B+木インデックスは葉ノードがキー順に連結されているため、ある範囲に収まる値を探す検索や、特定の値に等しい行を探す検索で効率がよい。値の種類が多く均一に分散している状況で、限られた範囲だけを取り出す検索は、絞り込みが強く働くのでインデックスの効果が大きい。一方、否定条件のように表の大部分が該当する検索では、表全体を読むほうが速く、インデックスは活かせない。
出典:平成30年度 春期 応用情報技術者試験 午前 問28(IPA)
SQLにおいて、A表の主キーがB表の外部キーによって参照されている場合、各表の行を追加・削除する操作の参照制約に関する制限について、正しく整理した図はどれか。こ…
正解:ア:A表(追加〇/削除△)、B表(追加△/削除〇)
要点:参照制約は子表の追加と親表の削除が拒否され得る
参照制約では、子表(B表)に親表(A表)に存在しない外部キー値を入れられない。したがってB表への追加は拒否される場合があり、A表への追加は自由に行える。削除は逆で、B表から参照されているA表の行は削除が拒否される場合があるが、B表の行の削除は制約に触れない。よってA表は追加〇・削除△、B表は追加△・削除〇となる。
最終更新:2026-08-29/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。