ホーム > データベーススペシャリスト試験 > 2011年

データベーススペシャリスト試験 2011年 午前207


地域別に分かれている同じ構造の三つの商品表, “東京商品”, “名古屋商品”, “大阪商品”がある。次の SQL 文と同等の結果が得られる関係代数式はどれか。ここで, 三つの商品表の主キーは“商品番号” である。また, X-Y は X からYの要素を除いた差集合を表す。
SELECT * FROM 大阪商品
  WHERE 商品番号 NOT IN(SELECT 商品番号 FROM 東京商品)
UNION
 
SELECT * FROM 名古屋商品
  WHERE 商品番号 NOT IN(SELECT 商品番号 FROM 東京商品)
大阪商品 ∩ 名古屋商品) - 東京商品
(大阪商品 U 名古屋商品) - 東京商品(正解)
東京商品 - (大阪商品 ∩ 名古屋商品)
東京商品 - (大阪商品 U 名古屋商品)

解説

# 問題の整理

- **3つのテーブル**: 「東京商品」「名古屋商品」「大阪商品」
- 各テーブルは同じ構造で、主キーは「商品番号」
- SQL文は以下の通り:

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

SQL文の意味

  1. 大阪商品テーブルから、東京商品に存在しない商品番号の商品を抽出
  2. 名古屋商品テーブルから、東京商品に存在しない商品番号の商品を抽出
  3. 上記2つの結果の**和集合(UNION)**を取得
すなわち、
  • 「東京商品にない商品」を、「大阪商品」と「名古屋商品」から取り出して合わせたもの

関係代数式の選択肢

  • ア: (大阪商品 ∩ 名古屋商品) - 東京商品
    → 大阪と名古屋の共通部分から東京を除く
  • イ: (大阪商品 ∪ 名古屋商品) - 東京商品
    → 大阪と名古屋の和集合から東京を除く
  • ウ: 東京商品 - (大阪商品 ∩ 名古屋商品)
    → 東京から大阪と名古屋の共通部分を除く
  • エ: 東京商品 - (大阪商品 ∪ 名古屋商品)
    → 東京から大阪と名古屋の和集合を除く

正解: イ の理由

  • UNION は和集合 (∪)
  • 条件「商品番号 NOT IN (東京商品)」は東京商品から除く = 差集合 (- 東京商品)
  • したがって、
(大阪商品名古屋商品)東京商品(\text{大阪商品} \cup \text{名古屋商品}) - \text{東京商品}
という表現になります。

なぜ他の選択肢が不適切か

  • ア: 大阪商品 ∩ 名古屋商品
    → 「大阪商品」と「名古屋商品」の両方に存在する商品のみ
    → 問題は両方にある必要はないので不適切
  • ウ・エ: 東京商品から除く操作
    → 東京商品を基に差集合を計算しているが、問題のSQLは東京商品から「抽出」しているわけではなく、東京商品に存在しない大阪・名古屋商品を集めたいので成立しない

まとめ

SQL文の意味関係代数式
東京商品にない商品を抽出し、(大阪商品 ∪ 名古屋商品) - 東京商品
それらを和集合でまとめる
よって、正解は イ: (大阪商品 ∪ 名古屋商品) - 東京商品 です。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ