参照制約とは?さんしょうせいやく
参照制約とは、外部キーに入る値が、参照先の表の主キーとして実在することをDBMS側で強制する一貫性制約。実在しない値の挿入・更新と、他から参照されている親行の削除やキー変更を拒否する。ON DELETE CASCADEを宣言した場合は拒否ではなく子行の連鎖削除になる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
アプリケーション側のチェックだけに頼ると、画面・バッチ・移行ツール・直接発行するSQLと入口が増えるたびに検査漏れが生まれ、どこか一つの経路から矛盾したデータが入り込む。表の定義として宣言しておけば、どの経路から来た更新にも同じ規則が効く。支援士では、完全性(データが正しい状態に保たれること)を仕組みとして担保する例として、権限設計やログと並べて問われる。
具体例
PostgreSQLやOracle DatabaseではREFERENCES句で宣言する。受注明細の商品コードに商品マスタへの参照制約を張っておけば、廃番処理で親行を消そうとした時点でエラーになり、参照先を失った明細が残らない。
試験での引っ掛け
拒否される操作の向きを取り違えやすい。止まるのは子側(外部キー側)の挿入・更新と、親側(参照される側)の削除・キー更新で、どちらの操作が拒否されるかを問う設問が定番。またCASCADEを付けると親行の削除で子行が黙って消えるため、記録を残したい表に安易に指定すると監査証跡ごと失われる。
関連用語
出た過去問
出典:平成31年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問21(IPA)
次の表において,“在庫”表の製品番号に参照制約が定義されているとき,その参照制約によって拒否される可能性がある操作はどれか。ここで,実線の下線は主キーを,破線の…
正解:“在庫”表への行追加
要点:参照制約は外部キー側への行追加を拒否しうる
参照制約は、外部キーの値が参照先の主キーに存在することを求める。在庫表の製品番号は製品表を参照する外部キーなので、製品表に存在しない製品番号を持つ行を在庫表へ追加しようとすると拒否される。参照する側への追加・更新と、参照される側の削除・更新が制約の対象になる。
出典:令和3年度 秋期 情報処理安全確保支援士試験 午前Ⅱ 問21(IPA)
次の表において、“在庫”表の製品番号に参照制約が定義されているとき、その参照制約によって拒否される可能性がある操作はどれか。ここで、実線の下線は主キーを、破線の…
正解:“在庫”表への行追加
要点:参照制約は参照する側への行追加を拒否し得る
参照制約は、外部キーの値が参照先の主キーに存在することを保証する。したがって在庫表へ行を追加する際、参照先の製品表に存在しない製品番号を指定すると、制約違反として拒否される可能性がある。逆に、参照する側の行を削除する操作や、参照される側へ行を追加する操作は、制約を破ることにならない。
出典・参考
公式シラバスの3 技術要素 > 3. データ操作 > (2) データベース言語に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。