メインコンテンツへスキップ
高度試験共通令和7年度 春期午前I問 10

令和7年度 春期 高度試験共通 午前I 問10

難度標準

SQL 文に示す参照制約が存在する“商品”表と“受注”表とがある。“商品”表の行を削除したとき、削除した行の商品コードと同じ値の商品コードをもつ“受注”表の行を自動的に削除する SQL文として、aに入れる字句はどれか。

〔SQL文〕

CREATE TABLE 商品 (

商品コード CHAR(4) PRIMARY KEY,

商品名 VARCHAR(64)

)

CREATE TABLE 受注 (

受注番号 INTEGER PRIMARY KEY,

商品コード CHAR(4),

受注個数 INTEGER,

納品日 CHAR(8),

FOREIGN KEY (商品コード) REFERENCES 商品(商品コード)

ON DELETE [ a ]

)

選択肢

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

参照制約における外部キーアクションの定義に基づくと、親テーブル(ここでは「商品」表)の行が削除された際に、子テーブル(ここでは「受注」表)の該当する行も連動して削除される動作は、CASCADEアクションによって実現されます。これは、データの整合性を保ちつつ、冗長なデータを自動的に整理するための仕組みです。

詳細Layer 2
展開

選択肢アのCASCADEは、まさにこの連鎖的な削除を定義するものであり、親テーブルの削除操作が子テーブルの削除操作をトリガーします。

補足Layer 3
展開

他の選択肢について、イのRESTRICTは、親テーブルの行を削除しようとした際に、子テーブルに参照している行が存在する場合、その削除操作を拒否するアクションです。ウのSET DEFAULTは、子テーブルの外部キー列の値を、あらかじめ定義されたデフォルト値に設定しますが、今回の問題では親行削除に伴う子行の削除を求めているため不適切です。エのSET NULLも、子テーブルの外部キー列の値をNULLに設定するアクションであり、削除とは異なる動作です。したがって、問題文の要件を満たすのはCASCADEのみとなります。

各選択肢の解説

ア

CASCADE

正しいです。ON DELETE CASCADEを指定すると、参照される“商品”表の行を削除したときに連鎖削除が働きます。その商品コードを外部キーに持つ“受注”表の行も自動的に削除されます。問題の「同じ商品コードの受注行を自動的に削除する」という要件に合致します。

イ

RESTRICT

誤りです。ON DELETE RESTRICTでは、“受注”表にその商品コードを参照する行が残っていると、“商品”表の行削除そのものが拒否されます。受注行を自動で削除するのではなく、参照整合性を守るために親行の削除を止める動作です。

ウ

SET DEFAULT

誤りです。ON DELETE SET DEFAULTでは、“受注”表の行は削除されずに残ります。外部キー列である商品コードが、列に定義された既定値に置き換えられます。受注番号や受注個数などの行は残るため、要件の自動削除にはなりません。

エ

SET NULL

誤りです。ON DELETE SET NULLでは、参照先の“商品”行が削除されると、“受注”表の商品コード列がNULLに更新されます。受注行そのものは残るため、同じ商品コードを持つ受注行を自動的に削除するという要件を満たしません。

この解説は?
AI生成

解説は公式の問題文・公式解答を基に作成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ずリンク先の公式資料でご確認ください。

最終更新:

検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

分野「データベース」の学習ポイント

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
正規化・SQL・トランザクション特性(ACID)・同時実行制御・分散DBの基本。
学習の進め方
ER 図 ⇄ 関係スキーマ ⇄ SQL の3者を行き来できるよう演習。3NF までの正規化を手で実行できると強い。
関連キーワード
正規化SQLACIDトランザクションロックデッドロックER図
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

関連する問題

データベース の他の問題

他年度の「データベース」問題

高度試験共通 の同じ分野を年度をまたいで演習する

高度試験共通 の学習ガイド