応用情報技術者試験 応用情報技術者試験 令和元年度秋期 午前27: 図のような関係データベースの“注文”表と“注文明細”表がある。“注文”表の行を削除すると,対応する“注文明細”表の行が,自動的に削除されるようにしたい。SQL文

応用情報技術者試験 令和元年度秋期 午前
Q 2727 / 80
図のような関係データベースの“注文”表と“注文明細”表がある。“注文”表の行を削除すると,対応する“注文明細”表の行が,自動的に削除されるようにしたい。SQL文のON DELETE句に指定する語句はどれか。ここで,図中の実線の下線は主キーを,破線の下線はを表す。
関係データベースの“注文”表(注文番号,注文日,顧客番号)と“注文明細”表(注文番号,明細番号,商品番号,数量)の関係図
この問の正解率:47.80%(205件)

問題本文

図のような関係データベースの“注文”表と“注文明細”表がある。“注文”表の行を削除すると,対応する“注文明細”表の行が,自動的に削除されるようにしたい。SQL文のON DELETE句に指定する語句はどれか。ここで,図中の実線の下線は主キーを,破線の下線は外部キーを表す。

選択肢

  • .CASCADE
  • .INTERSECT
  • .RESTRICT
  • .UNIQUE

正解

. CASCADE

解説

図では“注文明細”表の注文番号が外部キーで“注文”表(親)の主キーを参照している。親の行を削除したとき、参照している子(“注文明細”)の対応行も自動的に削除させるには、外部キー定義の ON DELETE 句に CASCADE を指定する。CASCADE は親の削除を子へ連鎖させ参照制約違反を防ぐ動作なので、正解は ア である。

選択肢ごとの解説

  • .ON DELETE CASCADE は親の行削除時に参照している子の対応行も連鎖的に自動削除する指定であり、要求どおりの動作になるので正しい。
  • .INTERSECT は二つの問合せ結果の積集合(共通行)を求める集合演算子であり、削除時の参照制約動作を指定する語句ではないので誤り。
  • .RESTRICT は子に参照されている親行の削除をエラーとして拒否する指定(ON DELETE の既定)で、子を自動削除する要求と逆なので誤り。
  • .UNIQUE は列の値の重複を禁止する一意性制約であり、削除時の連鎖動作を指定する語句ではないので誤り。

応用情報技術者試験 令和元年度秋期 午前過去問一覧へ戻る・問27