応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
合格発表日:2025年7月3日(あと33日)

応用情報技術者試験 令和元年秋 午前問27 解説付き過去問

問題

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

正解

解説

この問題は、関係データベースにおける参照制約と削除規則(ON DELETE)の理解を問うものです。親テーブルの行が削除された際に、子テーブルのデータをどのように扱うかを制御する手法がポイントとなります。

  1. 参照制約の概要
    関係データベースでは、異なるテーブル間の関連を外部キーによって定義できます。
    このとき、参照元のテーブル(親)と参照先のテーブル(子)の整合性を保つために、参照制約(外部キー制約)を設定します。

  2. ON DELETE 句の意味
    親テーブルの行が削除されたときに、子テーブルの行をどう処理するかを「ON DELETE」句で指定します。
    代表的な指定には以下があります:
    1. CASCADE:親の削除に伴い、子も自動的に削除

    2. RESTRICT / NO ACTION:子が存在する限り、親を削除できない

    3. SET NULL:親を削除した場合、子の外部キーをNULLに設定

    4. SET DEFAULT:外部キーをデフォルト値に設定(使用頻度は低い)


  3. 本問の要件に合致する指定
    「注文」表が削除されたときに、関連する「注文明細」表の行を自動的に削除したい、という要件は「CASCADE」によって実現できます。
    この指定により、親テーブルの行が削除されると、外部キーで参照している子テーブルの行も自動的に削除されます。

したがって、参照制約の削除規則に「ON DELETE CASCADE」を指定することで、本問の要件を満たすことができます。