応用情報技術者 2019年 秋期 午前2 問27
問題文
図のような関係データベースの “注文”と“注文明細” 表がある。“注文” 表の行を削除すると、対応する “注文明細” 表の行が、自動的に削除されるようにしたい。SQL文の ON DELETE 句に指定する語句はどれか。ここで、図中の実線の下線は主キーを、破線の下線は外部キーを表す。

選択肢
ア:CASCADE(正解)
イ:INTERSECT
ウ:RESTRICT
エ:UNIQUE
関係データベースの外部キー制約とON DELETE句【午前2 解説】
要点まとめ
- 結論:親テーブルの行削除時に子テーブルの関連行も自動削除するには、ON DELETE CASCADEを指定します。
- 根拠:CASCADEは外部キー制約のオプションで、親の削除に連動して子の行も削除する動作を定義します。
- 差がつくポイント:ON DELETE句の意味を正確に理解し、CASCADEとRESTRICTの違いを押さえることが重要です。
正解の理由
「注文」表の行を削除した際に、「注文明細」表の該当する行も自動的に削除したい場合、外部キー制約のON DELETE句にCASCADEを指定します。CASCADEは親テーブルの行削除に連動して子テーブルの関連行も削除するため、整合性を保ちながら自動処理が可能です。
よくある誤解
ON DELETE RESTRICTは親テーブルの行削除を制限するため、削除連鎖は起きません。INTERSECTやUNIQUEは外部キー制約のON DELETE句には使いません。
解法ステップ
- 問題文から「注文」表が親、「注文明細」表が子テーブルであることを確認する。
- 親の行削除時に子の行も削除したい要件を理解する。
- 外部キー制約のON DELETE句の意味を思い出す。
- ON DELETE CASCADEが親削除に連動して子削除を行うことを知る。
- 選択肢の中からCASCADEを選ぶ。
選択肢別の誤答解説
- ア: CASCADE
正解。親の削除に連動して子の行も削除する。 - イ: INTERSECT
SQLの集合演算子であり、ON DELETE句には無関係。 - ウ: RESTRICT
親の行削除を制限し、子の行が存在する場合は削除不可となる。 - エ: UNIQUE
一意制約を表すキーワードであり、ON DELETE句の指定には使わない。
補足コラム
外部キー制約のON DELETE句には主にCASCADE、RESTRICT、SET NULL、NO ACTIONなどがあります。CASCADEは削除連鎖を実現し、RESTRICTは削除を禁止、SET NULLは子の外部キーをNULLに設定します。これらを適切に使い分けることでデータの整合性を保てます。
FAQ
Q: ON DELETE CASCADEを使うとどんなメリットがありますか?
A: 親テーブルの行削除時に子テーブルの関連行も自動削除され、手動での削除漏れを防げます。
A: 親テーブルの行削除時に子テーブルの関連行も自動削除され、手動での削除漏れを防げます。
Q: ON DELETE RESTRICTとCASCADEの違いは何ですか?
A: RESTRICTは子テーブルに関連行がある場合、親の削除を禁止します。CASCADEは関連行もまとめて削除します。
A: RESTRICTは子テーブルに関連行がある場合、親の削除を禁止します。CASCADEは関連行もまとめて削除します。
関連キーワード: 外部キー制約、ON DELETE句、CASCADE, RESTRICT, 関係データベース、データ整合性

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

