平成21年度 春期 応用情報技術者試験 午前 問34
テクノロジ/データベース関係データベースの"注文"表又は"商品"表の行を削除する場合,"注文明細"表に対する操作として,適切な組合せはどれか。ここで,実線の下線は主キーを,破線の下線は外部キーを表す。 注文(注文番号,受注年月日) ※注文番号が主キー 商品(商品番号,商品名称,商品単価) ※商品番号が主キー 注文明細(注文番号,商品番号,注文数量,注文金額) ※注文番号,商品番号が主キー(いずれも外部キー) 〔削除時の操作〕 A:主キー側の行を削除する際,それを参照している外部キー側の行を同時に削除する。 B:主キー側の行を削除する際,それを参照している外部キー側の行があれば,主キー側の行の削除を許さない。 (注:本サイトでは原問題の下線(主キー・外部キー)を注記で表しています)
出典:平成21年度 春期 応用情報技術者試験 午前 問34
- ア"注文"表の行を削除する場合:A,"商品"表の行を削除する場合:A
- イ"注文"表の行を削除する場合:A,"商品"表の行を削除する場合:B
- ウ"注文"表の行を削除する場合:B,"商品"表の行を削除する場合:A
- エ"注文"表の行を削除する場合:B,"商品"表の行を削除する場合:B
正解:イ
解説
"注文明細"は注文番号と商品番号の両方を外部キーとして参照しています。"注文"表の行(親:注文番号)が削除されると対応する注文明細行も存在意義を失うため削除する必要があり(操作A),一方"商品"表の行(親:商品番号)は既に注文実績がある商品を安易に削除されると困るため,参照している注文明細行があれば削除を許さない(操作B)とするのが適切です。
選択肢ごとの解説
- ア誤り。"商品"表の行削除に操作Aを適用すると,既に注文実績のある商品情報が意図せず削除され,注文明細の履歴的な整合性が損なわれます。
- イ正しい。"注文"表の行削除では対応する注文明細行も削除(A),"商品"表の行削除では参照する注文明細があれば削除を禁止(B)するのが適切です。
- ウ誤り。"注文"表の行削除に操作Bを適用すると,注文を削除したくても対応する注文明細が残っている限り削除できなくなり不便です。
- エ誤り。"注文"表・"商品"表ともに操作Bとすると,注文の取消しなどの正当な削除操作までブロックされてしまいます。