DBデータベーススペシャリスト試験 午前Ⅱ

平成23年度特別 データベーススペシャリスト 午前Ⅱ 問7

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

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

選択肢

  1. ア
    (大阪商品 ∩ 名古屋商品)− 東京商品
  2. イ
    (大阪商品 ∪ 名古屋商品)− 東京商品
  3. ウ
    東京商品 −(大阪商品 ∩ 名古屋商品)
  4. エ
    東京商品 −(大阪商品 ∪ 名古屋商品)
解き方のヒントを見る

SQL抽出条件を整理する一つの視点

WHERE句などの条件を読むときは、対象となる行、条件同士の関係、NULLや重複の扱いを分けて整理し、各選択肢が示す結果の特徴を観察する順序を意識しましょう。

この問題で問われていること

一つの観点として、条件が適用される対象のまとまりに注目してください。行を選ぶ条件なのか、集計や結合後の結果に関わる条件なのかを区別し、処理の段階を図にして考えます。

視点

SQLの抽出結果を考えるときは、まず対象データの範囲を言葉で置き換え、条件を一度に結論へ結び付けず、どの段階の情報を見ているかを確認します。特定の答えではなく、条件と結果の対応関係を整理するための視点です。

確認ポイント

  • 条件が対象とするデータのまとまりを確認する
  • 条件が評価される処理の段階を整理する
  • 結果に現れる行や値の特徴を言葉で記録する
正解と解説を見る

正解

イ

解説

大阪商品と名古屋商品から東京商品に含まれる商品番号を除外し、その二つの結果をUNIONでまとめる処理は、二表の和集合から東京商品を差し引く関係代数式で表せる。

理由

各SELECTは、それぞれ大阪商品または名古屋商品から、東京商品に存在する商品番号の行を除外している。二つのSELECT結果をUNIONするため、まず大阪商品と名古屋商品を和集合でまとめ、その後に東京商品を差し引く形になる。

比較

したがって式は(大阪商品 ∪ 名古屋商品)− 東京商品となる。共通部分を使う式は両地域に同時に存在する商品だけに限定し、東京商品を左辺に置く式はSQLの抽出元と除外方向が逆になるため一致しない。

選択肢ア

これは不正解だよ。共通部分を使っているため、大阪商品と名古屋商品の両方に存在する行だけを対象にしてしまう。SQL文は大阪商品または名古屋商品のどちらかにある行を対象とし、東京商品にある商品番号を除外するので、抽出範囲が狭くなって一致しない。

選択肢イ(正解)

これは正解だよ。大阪商品と名古屋商品を和集合でまとめると、二つのSELECTが対象とする行を合わせられる。その集合から東京商品を差し引けば、東京商品に含まれる商品番号を除外する条件も表せるため、SQL文と同じ結果になる。

選択肢ウ

これは不正解だよ。東京商品を左辺に置き、そこから大阪商品と名古屋商品の共通部分を除いているため、東京商品を基準にした結果になる。SQL文は大阪商品と名古屋商品を基準に抽出するので、対象となる表の向きが異なっている。

選択肢エ

これは不正解だよ。東京商品から大阪商品と名古屋商品の和集合を除く式であり、東京商品にだけ存在する行を求める処理になる。SQL文はその逆に、大阪商品と名古屋商品から東京商品に含まれる商品番号を除外するため、結果の対象が一致しない。

学習のポイント

UNION、差集合、共通部分の意味をSQLの処理と対応付けて理解する。

出典:独立行政法人 情報処理推進機構(IPA)平成23年度特別 データベーススペシャリスト試験 午前Ⅱ 問7(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針