IPA過去問ドリル

平成25年度 秋期 応用情報技術者試験 午前 問31

テクノロジ/データベース

地域別に分かれている同じ構造の三つの商品表,“東京商品”,“名古屋商品”,“大阪商品”がある。次のSQL文と同等の結果が得られる関係代数式はどれか。ここで,三つの商品表の主キーは“商品番号”である。 SELECT * FROM 大阪商品  WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品) UNION SELECT * FROM 名古屋商品  WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)

出典:平成25年度 秋期 応用情報技術者試験 午前 問31

正解:イ

解説

SQL文は,大阪商品と名古屋商品のそれぞれから,東京商品に存在しない商品番号の行を抽出し,UNIONで結合しています。UNIONは重複を除いた和集合に相当するため,関係代数式では(大阪商品-東京商品)∪(名古屋商品-東京商品)となり,これは(大阪商品∪名古屋商品)-東京商品と等価です。

選択肢ごとの解説

  • 誤り。∩(積)を用いると,大阪商品と名古屋商品の両方に共通する商品番号だけが対象になり,SQLの意図(東京にない商品を両表からそれぞれ抽出)と一致しません。
  • 正しい。(大阪商品∪名古屋商品)-東京商品は,大阪・名古屋のいずれかにあり東京にはない商品を表し,SQLの結果と一致します。
  • 誤り。東京商品から他を引く式では,主語となる表が逆になっており,SQLが求めている大阪・名古屋側の商品を抽出できません。
  • 誤り。東京商品を主語にした式では,抽出対象の表が逆になっており,SQLの意図と一致しません。
応用情報技術者の過去問を演習モードで解く