参照制約|情報処理安全確保支援士試験 令和3年 秋期午前Ⅱ試験 問21
出典:令和3年秋期 午前Ⅱ 問21
分野:データベース / データベース設計
次の表において,"在庫"表の製品番号に参照制約が定義されているとき,その参照制約によって拒否される可能性のある操作はどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。


- ア:"在庫"表の行削除
- イ:"在庫"表の表削除
- ウ:"在庫"表への行追加
- エ:"製品"表への行追加
TSUNAGARU-ADVICE
まず押さえたいこと
参照制約は、外部キーに入る値が、参照先の主キーとして存在していることを求める制約です。この問題では、在庫表の製品番号が製品表の製品番号を参照しているため、製品表に存在しない製品番号を在庫表へ追加する操作は拒否される可能性があります。
迷ったときの判断軸
在庫表の行を削除しても、参照している側の行が消えるだけなので参照制約には通常違反しません。また、製品表への行追加は参照先を増やす操作なので問題になりにくいです。参照制約では、子表である在庫表に、親表である製品表に存在しない値を入れようとしていないかを見るのが判断軸です。
科目Bにつなげるために
科目Bでは、外部キー制約によって、どの追加・更新・削除が拒否されるかを問われることがあります。親表と子表を見分け、子表への追加・更新、親表からの削除・更新で参照関係が壊れないかを確認しましょう。※DB関連試験向け
参照制約は、外部キーの値が、参照先の表の主キーとして存在していることを保証する制約です。
この問題では、
在庫表の製品番号が外部キーであり、製品表の製品番号を参照しています。そのため、在庫表に行を追加するときに、製品表に存在しない製品番号を指定すると、参照制約によって拒否される可能性があります。したがって、ウが適切です。
❌他選択肢が誤りの理由ア:"在庫"表の行削除
⇒
在庫表は参照元の表です。参照元の行を削除しても、参照先である製品表に存在しない値を参照する状態にはならないため、この参照制約によって拒否される操作ではありません。イ:"在庫"表の表削除
⇒参照制約は、外部キーの値と参照先の主キーの整合性を保つための制約です。
在庫表自体の削除は、行追加時の外部キー値の整合性違反とは異なるため、ここで問われている参照制約によって拒否される操作としては適切ではありません。エ:"製品"表への行追加
⇒
製品表は参照先の表です。参照先に新しい製品番号を追加しても、在庫表の外部キーとの整合性を壊すことはありません。そのため、参照制約によって拒否される操作ではありません。