平成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の意図と一致しません。