平成21年度春期 応用情報技術者試験 午前 問34

分野:データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計)|実際に出題されたIPA過去問題

関係データベースの "注文" 表又は "商品" 表の行を削除する場合,"注文明細" 表に対する操作として,適切な組合せはどれか。ここで,表定義中の実線の下線は主キーを,破線の下線は外部キーを表す。 〔削除時の操作〕 A:主キー側の行を削除する際,それを参照している外部キー側の行を同時に削除する。 B:主キー側の行を削除する際,それを参照している外部キー側の行があれば,主キー側の行の削除を許さない。

問題の図表(IPA公式問題冊子より引用)
図表:IPA公式問題冊子より
  1.  "注文" 表の行を削除する場合 A,"商品" 表の行を削除する場合 A
  2.  "注文" 表の行を削除する場合 A,"商品" 表の行を削除する場合 B
  3.  "注文" 表の行を削除する場合 B,"商品" 表の行を削除する場合 A
  4.  "注文" 表の行を削除する場合 B,"商品" 表の行を削除する場合 B
解答・解説を見る

正解:イ

AI解説

「注文明細」は「注文」に従属する子データなので、注文行を削除すれば対応する注文明細も連動して削除(カスケード)してよい。一方「商品」は複数の注文明細から参照される共有マスタなので、まだ参照されている商品行は削除を許さず、過去の注文履歴に必要な情報を保持すべきである。 ア: 誤り。商品側もカスケード削除(A)にすると、商品を削除した際に過去の注文明細まで一緒に消えてしまい、注文履歴の整合性が失われるため不適切。 イ: 正解。「注文」の行削除では対応する「注文明細」も同時に削除する(A)一方、「商品」の行削除では、それを参照する「注文明細」が残っていれば削除を許さない(B)ことで、注文履歴に必要な情報を保持できる。 ウ: 誤り。「注文」側にBを適用すると、明細行が残っている限り注文自体を削除できなくなり不便である。 エ: 誤り。「商品」側にAを適用すると、商品を削除した際に関連する注文明細まで自動的に消えてしまい、過去の取引記録が失われる。 💡 「注文明細は注文の子だから連動削除」「商品は独立した共有マスタだから参照されていれば削除禁止」という業務上の依存関係で判断するとよい。

出典:平成21年度 春期 応用情報技術者試験 午前 問34 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「データベース」分野の攻略ポイント

関係モデル・正規化・SQL・トランザクション管理・障害回復・データベース設計が中心です。計算問題は少なく、定義と手順を正確に覚えていれば確実に得点できる、いわば「取りこぼしてはいけない」分野です。特に正規形とACID特性は毎年のように形を変えて出ます。

データベースの攻略ポイントをすべて見る(要点5項目・ひっかけ3項目)→

同じ分野(データベース(関係モデル・正規化・SQL・トランザクション/排他制御・障害回復・NoSQL・データベース設計))の過去問