ITパスポート過去問 令和2年度(2020年)問73
関係データベースにおいて,表Aと表Bの積集合演算を実行した結果はどれか。


選択肢
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
積集合は、2つの表の両方に同じ行が存在するとき、その行だけを取り出す演算です。表Aと表Bで共通している行は「せんべい, 250」と「チョコレート, 150」なので、この2行だけが残る「エ」が正解です。
Point
この問題は、関係データベースの集合演算のうち積集合が何を返すかを理解しているかを確認することを目的としています。あわせて、表の行を「列の値の組」として読み取り、両方の表で一致する行を見つけられるかを問うています。
解くために必要な知識
この問題を解くには、関係データベースにおける集合演算(積集合・和集合・差集合)の基本的な意味を理解している必要があります。
用語の整理
| 用語 | 意味 |
|---|---|
| 関係データベース | データを表(テーブル)で管理するデータベースです。表は列(属性)と行(タプル)で構成されます。 |
| 集合演算 | 2つの表(結果表)を、集合として扱い行を組み合わせる演算の総称です。 |
| 積集合(INTERSECT) | 2つの表の両方に存在する行だけを取り出す演算です。 |
他の集合演算との違い
| 演算 | SQLの例 | 結果の考え方 |
|---|---|---|
| 和集合 | UNION | どちらかの表にある行を集めます(重複行は除くのが一般的です)。 |
| 積集合 | INTERSECT | 両方の表にある行だけを集めます。 |
| 差集合 | EXCEPT | 片方の表にあって、もう片方の表にない行を集めます。 |
図表の読み取り方
列構成の一致
集合演算は、原則として次を満たす表同士で扱います。
-
列数が同じ
-
対応する列のデータ型が同じ(または互換)
行の一致条件
積集合では、次のように行全体で一致を判定します。
-
品名だけが同じでは不十分です。
-
品名と価格の両方が一致する必要があります。
解くための手順
-
表Aと表Bの列(品名、価格)が対応していることを確認します。
-
表Aと表Bで、品名と価格が両方一致する行を探します。
-
一致した行だけを結果としてまとめます。
問題の解法手順
図表の読み取り
表Aの行
-
ガム, 100
-
せんべい, 250
-
チョコレート, 150
表Bの行
-
せんべい, 250
-
チョコレート, 150
-
どら焼き, 100
解く手順
手順1 行全体が一致するものを探す
積集合は、品名だけでなく価格も含めて、行全体が一致する必要があります。
手順2 表Aの各行が表Bにもあるかを確認する
-
ガム, 100 は表Bにないので除外します。
-
せんべい, 250 は表Bにもあるので採用します。
-
チョコレート, 150 は表Bにもあるので採用します。
手順3 採用した行だけを結果表にする
結果は、せんべい, 250 と チョコレート, 150 の2行になり、選択肢「エ」と一致します。
選択肢ごとの解説
- ア:不正解
表Aと表Bにある行をまとめており(どら焼き,100 も含む)、積集合ではなく和集合の結果に相当します。
- イ:不正解
共通する行について価格を加算していますが、積集合を含む集合演算では行の値を加算しません。したがって積集合の結果ではありません。
- ウ:不正解
共通する品名を取り出していますが価格を加算しています。積集合は一致した行をそのまま返すため、価格が変化するこの結果は積集合ではありません。
- エ:正解
表Aと表Bに共通して存在する行(せんべい,250 と チョコレート,150)だけを取り出しており、積集合の結果です。
まとめ
積集合は、2つの表の両方に同じ行が存在するとき、その行だけを取り出す演算です。表Aと表Bで共通している行は「せんべい, 250」と「チョコレート, 150」なので、この2行だけが残る「エ」が正解です。
テクノロジ系 > 技術要素 > データベース
表Aと表Bにある行をまとめており(どら焼き,100 も含む)、積集合ではなく和集合の結果に相当します。
共通する行について価格を加算していますが、積集合を含む集合演算では行の値を加算しません。したがって積集合の結果ではありません。
共通する品名を取り出していますが価格を加算しています。積集合は一致した行をそのまま返すため、価格が変化するこの結果は積集合ではありません。
表Aと表Bに共通して存在する行(せんべい,250 と チョコレート,150)だけを取り出しており、積集合の結果です。