地域別に分かれている同じ構造の三つの商品表、“東京商品”、“名古屋商品”、“大阪商品”がある。次のSQL文と同等の結果が得られる関係代数式はどれか。ここで、三つの商品表の主キーは“商品番号”である。
SELECT * FROM 大阪商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
UNION
SELECT * FROM 名古屋商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
ア (大阪商品 ∩ 名古屋商品) − 東京商品
イ (大阪商品 ∪ 名古屋商品) − 東京商品
ウ 東京商品 − (大阪商品 ∩ 名古屋商品)
エ 東京商品 − (大阪商品 ∪ 名古屋商品)
イ
問題のSQL、
SELECT * FROM 大阪商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
UNION
SELECT * FROM 名古屋商品
WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 東京商品)
は、
“東京商品”表から商品番号を抽出し、その中にない商品番号をキーにして
“大阪商品”表から全ての項目を抽出し、そして、
“東京商品”表から商品番号を抽出し、その中にない商品番号をキーにして
“名古屋商品”表から全ての項目を抽出し、結合する
という意味になる。
関係代数式にすると
(大阪商品−東京商品) ∪ (名古屋商品−東京商品) となり、これを変形すると
(大阪商品 ∪ 名古屋商品) − 東京商品 となる。
問30 | 目次 | 問32 |