平成28年春期  問29  参照制約

Otoさん  
(No.1)
参照制約をしっかり理解できておりません。
https://www.ap-siken.com/kakomon/28_haru/q29.html
回答選択肢
ア:"在庫"表の行削除  イ:"在庫"表の表削除
ウ:"在庫"表への行追加  エ:"製品"表への行追加
正解:ウ
解説:参照制約によって拒否される可能性ある操作は、「ウ」の「"在庫"表への行追加」です。具体的には、"在庫"表に行を追加する際に、"製品番号"列の値として"製品"表に存在しない製品番号を指定すると、参照制約問題が発生して操作が拒否されます。

とありますが、アが選択できないのはなぜでしょうか。
解説文を以下のように書き換えたら、、、という思惑です。

「(書き換え)"在庫"表の行を削除する際に、"製品番号"列の値として"製品"表に存在する製品番号を指定すると、参照制約問題が発生して操作が拒否されます。」
→これは削除可能でしょうか。
2023.09.21 08:00
GinSanaさん 
AP プラチナマイスター
(No.2)
この投稿は投稿者により削除されました。(2023.09.21 08:31)
2023.09.21 08:31
GinSanaさん 
AP プラチナマイスター
(No.3)
在庫表のレコードを消しても参照元は影響を受けないからです。これが製品表のレコードで現在すでに参照されている行を削除するとなったら、(CASCADEを指定していない場合)拒否されます。
2023.09.21 08:31
電タックさん 
(No.4)
>→これは削除可能でしょうか。 
はアと同じ事を言っていると思うので可能です(解釈が間違っていたらごめんなさい)

外部キー参照の制約が指定された場合、参照先が存在しないものは作れません。
問題の場合
製品.製品番号に無いものを、在庫.製品番号として作れません。

親亀の背に子亀がいる状態で子亀は親亀の背から出れません。
また親亀がコケたら子亀全員に影響するけど、逆の子亀がコケても親亀には関係ないという感じです。

ちなみに選択にはないですが、他に外部キーの制約に掛かりそうな操作に
・"製品"表の行の削除(表削除含む)
>親亀がコケて背の子亀達が困る
・"在庫"表の行の変更
>別の親亀の背ならセーフですが、存在しない親亀の背には乗れない。
などがあります。

GinSanaさんの「在庫表のレコードを消しても参照元は影響を受けないからです。」が短いながら素晴らしく的を得た完璧な表現だと思いました。
2023.09.21 09:53
Otoさん  
(No.5)
GinSanaさん
シンプルで明快なご回答ありがとうございます。

電タックさん
亀の例え、わかり易くて助かります。
ありがとうございました。
2023.09.21 12:46

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop