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

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

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

