平成19年 春期 ソフトウェア開発技術者 午前 問63

地域別に分かれている同じ構造の三つの商品表、“東京商品”、“名古屋商品”、“大阪商品”がある。
次のSQL文と同等の結果が得られる関係式はどれか。
ここで、三つの商品表の主キーは“商品番号”である。
また、X -Y X からY の要素を除いた差集合を表す。

SELECT * FROM 大阪商品
  WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
UNION
SELECT * FROM 名古屋商品
  WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)

 ア  (大阪商品 ∩ 名古屋商品)-東京商品
 イ  (大阪商品 ∪ 名古屋商品)-東京商品
 ウ  東京商品-(大阪商品 ∩ 名古屋商品)
 エ  東京商品-(大阪商品 ∪ 名古屋商品)


答え イ


解説
問題のSQL文の
  SELECT * FROM 大阪商品
    WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
は、大阪商品の集合の中から、東京商品にも属している要素を取り除くことを意味している。
すなわち、
 大阪商品-東京商品
である。

同様に問題のSQL文の
  SELECT * FROM 名古屋商品
    WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
は、名古屋商品の集合の中から、東京商品にも属している要素を取り除くことを意味している。
すなわち、
 名古屋商品-東京商品
である。

問題のSQLではこの2つを
 UNION:和集合
しているので、
 (大阪商品-東京商品) ∪ (名古屋商品-東京商品)
になる。
この式を、整理すると
 (大阪商品 ∪ 名古屋商品)-東京商品
(イ)になる。


キーワード
・差集合

キーワードの解説
  • 差集合
    ある集合から、別の集合に属している要素を取り除いて、得られる集合のことです。
    すなわち、ベン図で言うとある集合から別の集合と重なっている部分を除いた集合になります。
    例えば、1けたの素数の集合P={2, 3, 5, 7}、1けたの偶数の集合Q={2, 4, 6, 8}について
     P - Q={3, 5, 7}
     Q - P={4, 6, 8}
    になります。

もっと、「差集合」について調べてみよう。

戻る 一覧へ 次へ