平成23年度 特別 午前Ⅱ 問17
データ操作
参照制約に関する問題
SQL において,A 表の主キーが B 表の外部キーによって参照されている場合,行を追加・削除する操作の制限について,正しく整理した図はどれか。ここで,△印は操作が拒否される場合があることを表し,○印は制限なしに操作できることを表す。
選択肢は原典では行が A表・B表,列が追加・削除の表。
- アA表:追加 ○,削除 △ / B表:追加 △,削除 ○
- イA表:追加 ○,削除 △ / B表:追加 ○,削除 △
- ウA表:追加 △,削除 ○ / B表:追加 ○,削除 △
- エA表:追加 △,削除 ○ / B表:追加 △,削除 ○
答えと解説を見る
✓ これが正解アA表:追加 ○,削除 △ / B表:追加 △,削除 ○
解説
参照される A 表は削除が、参照する B 表は追加が拒否され得ます。
B 表の外部キーが A 表の主キーを参照しているとき、参照制約は、B 表の外部キーの値が必ず A 表のどれかの行の主キーの値と一致することを求めます。A 表への行の追加は、B 表の参照を壊さないので制限なく行えます。A 表の行を削除すると、その行を参照している B 表の行が宙に浮くので、拒否される場合があります。B 表への行の追加は、外部キーの値が A 表に無ければ拒否されます。B 表の行の削除は、参照する側が減るだけなので制限なく行えます。参照される側は削除、参照する側は追加に気をつける、と向きで覚えると、表の並びが入れ替わっても判断できます。
ほかの選択肢はなぜ違うのか
- イA表:追加 ○,削除 △ / B表:追加…:A 表は合っていますが、B 表の追加と削除が逆です。B 表に追加する行の外部キーが A 表に無い値なら拒否されますし、B 表の行を消しても参照が壊れることはありません。
- ウA表:追加 △,削除 ○ / B表:追加…:A 表と B 表の両方で、追加と削除の印が逆になっています。参照される A 表は行を足しても問題が無く消すときに拒否され得ます。参照する B 表は足すときに拒否され得て、消すのは自由です。
- エA表:追加 △,削除 ○ / B表:追加…:B 表は合っていますが、A 表の追加と削除が逆です。A 表へ行を足しても参照は壊れず、A 表の行を消すと、それを参照する B 表の行が残ってしまうので拒否される場合があります。
出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問17
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)