参照制約とは?さんしょうせいやく
参照制約とは、外部キーの列に入る値が、参照先の表に実在する行のキー値かNULLのどちらかであることをDBMSに保証させる制約。アプリケーション側のチェック漏れや同時実行の隙間があっても、親のない子の行(孤児)が生まれるのを止められる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
整合性の検査をアプリケーションだけに置くと、移行バッチ・運用担当の手作業SQL・別システムからの投入といった経路から必ず抜ける。DBMS側の宣言にしておけば、どの経路から来た更新でも同じ規則が効く。実装方式の設計はデータベーススペシャリスト試験でインテグリティ制約として問われる論点である。
具体例
PostgreSQLで受注表の顧客コードに REFERENCES 顧客(顧客コード) を付けておくと、存在しない顧客コードの受注はINSERTの時点で拒否される。移行用のバッチや手作業のSQLから流し込んだ場合も同じように弾かれる。
試験での引っ掛け
親を削除・更新したときの挙動は参照動作(CASCADE/SET NULL/SET DEFAULT/RESTRICT/NO ACTION)で決まり、既定はNO ACTION——子が残っていれば親の削除が拒否される。外部キーがNULLの行は制約違反にならない点も見落としやすい。
関連用語
出た過去問
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問11(IPA)
図のような関係データベースの"注文"表と"注文明細"表がある。"注文"表の行を削除すると、対応する"注文明細"表の行が、自動的に削除されるようにしたい。参照制約…
正解:CASCADE
要点:親削除に子も連動させる削除規則はCASCADE
参照制約の削除規則で、親表の行が削除されたときに、それを参照している子表の行も連鎖して削除させる指定がCASCADEである。この設問では注文が親、注文明細が子にあたるので、注文の行を消すと対応する明細も自動的に消える。参照している行があれば削除を拒否する指定はRESTRICTで、これとは逆の動きになる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 3. データ操作 > (2) データベース言語に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。