次の表において,“在庫”表の製品番号に定義された参照制約によって拒否される可能性がある操作はどれか。
ここで,実線の下線は主キーを,破線の下線は外部キーを表す。
在庫(在庫管理番号〔主キー:実線下線〕,製品番号〔外部キー:破線下線〕,在庫量)
製品(製品番号〔主キー:実線下線〕,製品名,型,単価)
正答3
解説
正解は3です。
参照制約(外部キー制約)によって拒否される可能性がある操作を問う問題です。
“在庫”表の製品番号は外部キーで、“製品”表の主キーである製品番号を参照しています。
参照制約は、参照する側の外部キーの値が、参照される側の主キーに必ず存在することを求める制約です。
【選択肢別解説】
1:× “在庫”表は参照する側なので、その行を削除しても参照先を失う行は生じません。
参照制約で拒否されることはありません。
2:× “在庫”表を参照している表はないので、“在庫”表を表ごと削除しても参照制約による拒否は起きません。
3:○ “製品”表に存在しない製品番号をもつ行を“在庫”表に追加すると、参照先のない外部キーになります。
そのため、参照制約によって拒否される可能性があります。
4:× “製品”表に行を追加しても、参照される製品番号が増えるだけです。
既存の“在庫”表の行の参照先は失われないので、拒否されません。
【ポイント】
参照制約で拒否されうるのは、参照する側への追加・更新と、参照される側からの削除・更新です。
本問の選択肢にはありませんが、“在庫”表から参照されている“製品”表の行を削除する操作も拒否される可能性があります。