令和元年度 秋期 午前 問27
データベース
外部キーに関する問題
図のような関係データベースの "注文" 表と "注文明細" 表がある。"注文" 表の行を削除すると,対応する "注文明細" 表の行が,自動的に削除されるようにしたい。SQL 文の ON DELETE 句に指定する語句はどれか。ここで,図中の実線の下線は主キーを,破線の下線は外部キーを表す。
注文(注文番号,注文日,*顧客番号*)
注文明細(*注文番号*,明細番号,*商品番号*,数量)
- `下線` … 主キー
- `*斜体*` … 外部キー(原典では破線の下線)
- アCASCADE
- イINTERSECT
- ウRESTRICT
- エUNIQUE
答えと解説を見る
✓ これが正解アCASCADE
解説
親を消したら子も一緒に消える、という連鎖を指定します。
この句は、親にあたる行が消えたときの振る舞いを定めます。親と子を結び付けているのは、子の側に置かれた外部キーです。選べる振る舞いは、いくつか用意されています。一つは、子の行も続けて消してしまう指定です。滝が段々に流れ落ちていく様子から、その名が付いています。設問は、注文を消したら明細も自動で消えてほしいと言っています。だから、この連鎖を選ぶことになります。別の指定を選べば、子が残っているかぎり親を消せなくなります。どちらを選ぶかは、業務としてどうしたいかで決まります。明細だけが残っても意味をなさないなら、連鎖が向いています。残る肢は、そもそもこの句に置ける語ではありません。共通部分を取り出す演算子や、重複を許さない制約の語が混ぜてあります。置ける語かどうかを先に見ると早く絞れます。
ほかの選択肢はなぜ違うのか
- イINTERSECT:二つの問合せの結果から、共通する行だけを取り出す演算子を挙げています。使う場所は、表から値を取り出す文の中です。行が消えたときの振る舞いを定める句には置けません。そもそも役割の種類が違います。置き場所からして噛み合いません。
- ウRESTRICT:子の行が残っているあいだは、親を消せなくする指定です。この句に置ける語ではありますが、望みと逆に働きます。自動で消えるどころか、消す操作そのものが拒まれます。整合性を守る向きは同じでも、振る舞いが違います。最も紛らわしい肢です。
- エUNIQUE:列の値が重ならないことを求める制約を表す語を挙げています。表を作るときに、列へ付ける決まりです。行が消えたあとの動きとは関わりがありません。こちらも置く場所が違います。制約の種類そのものを取り違えた形になります。
この問題の用語
- 関係データベースデータを表の形で持ち、表どうしを結びつけて扱う、最も広く使われているデータベース。データの定義や操作にはSQLを使います。
出典:令和元年度 秋期 応用情報技術者試験 午前 問27
同じ用語が出る問題
- 令和7年度 秋期 午前 問28:ビューに関する記述(関係データベース)
- 令和7年度 春期 午前 問25:多重度に関する問題(関係データベース)
- 令和5年度 春期 午前 問26(関係データベース)
- 令和3年度 春期 午前 問28:NoSQLに関する問題(関係データベース)
- 令和2年度 10月 午前 問27(関係データベース)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)