この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ウ

解説

参照制約(外部キー制約)はリレーショナルデータベースの整合性を保つための制約で、「外部キーの値は必ず参照先テーブルの主キーに存在する値でなければならない」というルールです。「在庫」表の製品番号が「製品」表の製品番号(主キー)を参照する外部キーとして定義されている場合、在庫表に追加する行の製品番号が製品表に存在しない値であれば、その追加操作は参照制約違反として拒否されます。つまり「在庫表への行追加」で、存在しない製品番号を使おうとした場合に拒否される可能性があります。参照制約によって保護される整合性を参照整合性(Referential Integrity)といいます。逆に「製品表の削除」は、在庫表から参照されている製品番号を削除しようとする場合に拒否されます(CASCADE設定がある場合を除く)。

なぜ他の選択肢は違うのか

選択肢 ア
「在庫表の行削除」は参照制約によって拒否されません。在庫表は参照される側(製品表)ではなく参照する側(外部キーを持つ側)です。参照する側の行を削除しても、参照先の整合性は維持されます。参照制約で行削除が拒否されるのは参照される側(製品表)の行削除です。
選択肢 イ
「在庫表の表削除(DROP TABLE)」も通常は参照制約によって拒否されません。DDL(DROP TABLE)は外部キー制約がある場合、参照される側のテーブルは削除できませんが、参照する側(在庫表)は削除可能です。ただしRDBMSの実装によって異なる場合があります。
選択肢 エ
「製品表への行追加」は参照制約によって拒否されません。製品表は参照される側(主キーを持つ側)であり、新しい行を追加しても既存の参照関係を壊すことはありません。新製品を登録する操作は制約に違反しません。

解くときのポイント

参照制約で拒否される操作の判断軸:「外部キー側への追加(参照先にない値)」と「主キー側の削除(参照されている行)」が拒否対象。在庫表(外部キー側)への行追加→製品表に存在しない製品番号は不可。製品表(主キー側)の行削除→在庫表で参照されていれば不可。