戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2013年 秋期 午前231


問題文

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

選択肢

(大阪商品 ∩ 名古屋商品) - 東京商品
(大阪商品 ∪ 名古屋商品) - 東京商品(正解)
東京商品 - (大阪商品 ∩ 名古屋商品)
東京商品 - (大阪商品 ∪ 名古屋商品)

地域別商品表のSQLと関係代数【午前2 解説】

要点まとめ

  • 結論:SQL文は「大阪商品と名古屋商品のうち、東京商品にない商品番号を抽出」しているため、関係代数では「(大阪商品 ∪ 名古屋商品) - 東京商品」が正解です。
  • 根拠:NOT IN句は「東京商品に存在しない商品番号」を意味し、UNIONは両方の集合を合わせるため、和集合から東京商品を引く操作に対応します。
  • 差がつくポイント:集合演算の意味を正確に理解し、NOT INの否定条件を「差集合」で表現できるかが重要です。

正解の理由

選択肢イの「(大阪商品 ∪ 名古屋商品) - 東京商品」は、まず大阪商品と名古屋商品を和集合でまとめ、その中から東京商品に含まれる商品番号を除外しています。これはSQLの「NOT IN (東京商品)」を両方のテーブルに適用し、結果をUNIONで結合する処理と完全に一致します。

よくある誤解

「NOT IN」を「差集合」と理解せずに「積集合」や「東京商品から引く」と誤解しやすいです。UNIONの意味を和集合と混同しないことが重要です。

解法ステップ

  1. SQL文の構造を理解する:大阪商品と名古屋商品から東京商品にない商品番号を抽出し、それらをUNIONで結合。
  2. 「NOT IN (東京商品)」は「東京商品に含まれない集合」を意味するため、差集合で表現可能。
  3. 大阪商品と名古屋商品を和集合でまとめる。
  4. その和集合から東京商品を差し引く操作が関係代数式での表現。
  5. 選択肢の中から「(大阪商品 ∪ 名古屋商品) - 東京商品」を選ぶ。

選択肢別の誤答解説

  • ア: (大阪商品 ∩ 名古屋商品) - 東京商品
    → 大阪商品と名古屋商品の共通部分のみを対象にしており、UNIONの意味と異なる。
  • イ: (大阪商品 ∪ 名古屋商品) - 東京商品
    → 正解。和集合から東京商品を除外し、SQLの意味と一致。
  • ウ: 東京商品 - (大阪商品 ∩ 名古屋商品)
    → 東京商品から共通部分を引いており、SQLのNOT INの意味と逆。
  • エ: 東京商品 - (大阪商品 ∪ 名古屋商品)
    → 東京商品から和集合を引くため、SQLの条件と逆の結果になる。

補足コラム

関係代数の集合演算はSQLの集合演算と密接に関連しています。特にNOT INは差集合(セット差)で表現でき、UNIONは和集合、INTERSECTは積集合に対応します。主キーが同じ場合、集合演算の結果が明確になるため、問題文の主キー情報は重要です。

FAQ

Q: NOT INとNOT EXISTSの違いは何ですか?
A: NOT INは指定した集合に含まれない値を抽出し、NULLが含まれると結果が変わる場合があります。NOT EXISTSはサブクエリの存在有無で判定し、NULLの影響を受けにくいです。
Q: UNIONとUNION ALLの違いは?
A: UNIONは重複行を排除して結合しますが、UNION ALLは重複を排除せず全ての行を結合します。問題文のSQLはUNIONなので重複排除が前提です。

関連キーワード: 関係代数、集合演算、SQL, NOT IN, UNION, 差集合
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

このサイトについてプライバシーポリシー利用規約特商法表記開発者について