参照制約とは?さんしょうせいやく
参照制約は、外部キーの列に入る値が参照先の表に実在することをDBMS(データベース管理システム)に保証させる制約で、表の定義でREFERENCES句として宣言する。午前I(令和8年度から科目A-1)での出方は3つに絞られている——どの操作が拒否されるかという向き、ON DELETE句に書く語の区別、そしてREFERENCESが表の定義側の語か問合せ側の語かである。
最終更新:2026-10-07
この語が出る過去問を解く →背景
午前Iは専門外の分野が5分の4を占める科目で、データベースを専門にしない受験者にとって参照制約は隣の分野の語になる。実際の設問も設計論ではなく、表を2つ示して「拒否される可能性がある操作はどれか」を選ばせるか、SQL文の空欄に入れる字句を4つの予約語から選ばせるか、という形をとる。制約の理屈を語れることより、どの操作とどの語がどちらを向いているかを図として持っておくほうが速い。
具体例
IPAの午前Iで実際に示されたのは、在庫表(在庫管理番号、製品番号、在庫量)の製品番号が製品表(製品番号、製品名、型、単価)を参照する形である。この構成で拒否されるのは在庫表への行追加で、製品表に存在しない製品番号を持つ行は入らない。一方、在庫表の行を削除しても、製品表へ行を追加しても、参照は壊れないので拒否されない。
試験での引っ掛け
3つの取り違えがそのまま誤答になっている。第一に向きで、拒否されるのは参照する側(子)の行追加・外部キー更新と、参照される側(親)の行削除・キー更新。子の行削除と親への行追加は拒否されないのに、選択肢に並ぶと選んでしまう。第二にON DELETE句の4語で、親の削除に連鎖して子の行も消すのがCASCADE、子が残っていれば親の削除自体を拒否するのがRESTRICT、子の外部キー列をナルにするのがSET NULL、既定値に置き換えるのがSET DEFAULTであり、後ろの3つでは子の行は残る。第三に、REFERENCESは参照制約を定義するときの語であって、SELECT句には書けない(重複を除くのはDISTINCT)。
関連用語
出た過去問
出典:平成28年度 春期 高度試験 午前Ⅰ 問9(IPA)
次の表において,“在庫”表の製品番号に定義された参照制約によって拒否される可能性がある操作はどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。 …
正解:“在庫”表への行追加
要点:参照制約は参照側への追加と被参照側の削除で違反しやすい
参照制約は、外部キーの値が参照先の主キーに存在することを保証する。在庫表の製品番号が製品表を参照しているので、製品表に無い製品番号を持つ行を在庫表へ追加しようとすると拒否される。参照する側への追加と、参照される側からの削除・更新が制約違反になり得る操作である。
出典:令和7年度 春期 高度試験 午前Ⅰ 問10(IPA)
SQL文に示す参照制約が存在する"商品"表と"受注"表とがある。"商品"表の行を削除したとき、削除した行の商品コードと同じ値の商品コードをもつ"受注"表の行を自…
正解:CASCADE
要点:ON DELETE CASCADEは親行削除時に子行も連鎖削除
参照制約のON DELETE句には、親表の行削除時の動作を指定する。CASCADEを指定すると、削除された親行を参照している子表の行も連鎖して自動的に削除される。本問は商品の削除に合わせて受注の該当行も消したいのでCASCADEが適切である。
出典・参考
公式シラバスの3 技術要素 > 3. データ操作 > (2) データベース言語に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。