平成22年度秋期 応用情報技術者試験 午前 問32
次の表定義において,"在庫"表の製品番号に定義された参照制約によって拒否される可能性のある操作はどれか。ここで,実線は主キーを,破線は外部キーを表す。 在庫(在庫管理番号,製品番号,在庫量) 製品(製品番号,製品名,型,単価)
- ア "在庫"表の行削除
- イ "在庫"表の表削除
- ウ "在庫"表への行追加
- エ "製品"表への行追加
解答・解説を見る
正解:ウ
AI解説
参照制約(外部キー制約)は、子表(在庫)の外部キー値が親表(製品)の主キーに存在することを保証する仕組みである。よって、親表に存在しない製品番号を持つ行を子表(在庫)へ追加しようとすると、参照制約違反として拒否される。 ア: "在庫"表の行削除は、子表側のデータを減らすだけで親表(製品)の参照関係に矛盾を生じさせないため、通常は参照制約によって拒否されない。 イ: "在庫"表自体の削除(表削除)も、子表を削除するだけで親表との整合性を損なわないため、参照制約による拒否の対象にはならない(ただし他の制約で制限される場合はある)。 ウ: 正しい。"在庫"表への行追加時に、追加する行の製品番号が"製品"表に存在しない場合、参照制約(外部キー制約)によって挿入が拒否される可能性がある。 エ: "製品"表への行追加は親表側にレコードを増やすだけであり、子表(在庫)の外部キーとの整合性を損なわないため、参照制約による拒否の対象にはならない。 💡 参照制約で拒否されるのは基本的に「子表への挿入(親に無い値)」と「親表の該当行の削除・更新(子表から参照されている場合)」の2パターン。今回は子表への挿入なので前者に該当する。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。