ITパスポート 2011年 秋期 問65
問題文
関係データベースのA表、B表がある。A表、B表に対して、を行った結果は、それぞれP表、Q表及びR表のどれになるか。ここで、は和集合演算、は共通集合演算を表す。


選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
和集合と共通集合【ITパスポート解説】
正解の理由
関係データベース(表形式でデータを扱うシステム)における和集合と共通集合は次の通りです。和集合(記号 )は「AまたはBに含まれるすべての行(重複は1つにまとめる)」、共通集合(記号 )は「AにもBにも含まれる行」を表します。
A表の製品コードは P001、P003、P007、P012、P019、B表の製品コードは P003、P007、P020 です。これより
A表の製品コードは P001、P003、P007、P012、P019、B表の製品コードは P003、P007、P020 です。これより
- 共通集合(A∩B)は両方にある P003 と P007 → P表(P003, P007)に一致します。
- 和集合(A∪B)は両方のすべての行を重複を除いて集めた P001、P003、P007、P012、P019、P020 → R表に一致します。
したがって、(A∪B) = R、(A∩B) = P となり、選択肢のうち中央列が R、右列が P の組合せである ウ が正しい選択です。
解法ステップ
- A表とB表の各行を「識別できる項目」(ここでは商品コード)で並べる。
- A: P001, P003, P007, P012, P019
- B: P003, P007, P020
- 共通集合(A∩B)を求める:AにもBにも含まれるものだけを取る → P003, P007。これは P表と同じ内容。
- 和集合(A∪B)を求める:AかBのどちらかに含まれるすべてを集め、重複は1つにまとめる → P001, P003, P007, P012, P019, P020。これは R表と同じ内容。
- 表の名前(P, Q, R)と照合して、(A∪B)=R、(A∩B)=P の組合せを選ぶ → ウ。
選択肢別の誤答解説
- ア:中央 (A∪B)=P、右 (A∩B)=R
誤り。Pは共通の小さい集合(P003, P007)なので和集合には不足します。Rは和集合の内容を含む全件であり、共通集合になるわけではありません。 - イ:中央 (A∪B)=Q、右 (A∩B)=R
誤り。Qは A にだけある行(P001, P012, P019)で、和集合としては一部しか含んでいません。Rが共通集合になるのも矛盾です。 - ウ:中央 (A∪B)=R、右 (A∩B)=P
正しい。上の「正解の理由」で示したように、和集合は R、共通集合は P に対応します。 - エ:中央 (A∪B)=R、右 (A∩B)=Q
誤り。和集合がRなのは合っていますが、共通集合がQではありません。QはAからのみの行であり、Bに共通していない行が含まれます。
よくある誤解
- 「和集合=両方に含まれるもの」と取り違える(これが交差=共通集合の定義)。和集合は「どちらかに含まれる全て」です。
- 重複を数えてしまう(AとBに同じ行があるとき、和集合で2回カウントするのは間違い。重複は1つにまとめます)。
- 表の行順や見た目で判断してしまう(集合演算は行の内容で判断。順序は意味を持ちません)。
補足コラム
- SQLでの対応:関係データベースの集合演算はSQLでも使えます。一般的には次のようになります(テーブル名 A, B と仮定)。
-- 重複を取り除く和集合
SELECT * FROM A
UNION
SELECT * FROM B;
-- 全ての行を含める(重複を残す)和集合
SELECT * FROM A
UNION ALL
SELECT * FROM B;
-- 共通集合(両方に存在する行)
SELECT * FROM A
INTERSECT
SELECT * FROM B;
- 行の等価性:集合演算で「同じ行」とみなすには、全ての列の値が一致する必要があります。今回の例では商品コードで一意(主キー:その行を一意に識別する項目)になっているため、商品コードだけで照合して考えて問題ありません。
- 実務ポイント:重複を意図的に残したいときは SQL の UNION ALL を使う点に注意。
FAQ
Q. 行の順序は結果に影響しますか?
A. いいえ。集合演算は集合の概念なので「順序」は意味を持ちません。必要なら結果を ORDER BY で並べ替えます。
A. いいえ。集合演算は集合の概念なので「順序」は意味を持ちません。必要なら結果を ORDER BY で並べ替えます。
Q. 列の数や型が違うとどうなりますか?
A. SQL の集合演算では、結合する両方の SELECT が同じ数と互換性のある型の列を返す必要があります。問題文のように同じ列構成なら問題ありません。
A. SQL の集合演算では、結合する両方の SELECT が同じ数と互換性のある型の列を返す必要があります。問題文のように同じ列構成なら問題ありません。
Q. 同じ内容の行が複数ある場合、和集合はどうなりますか?
A. 通常の集合演算(SQL の UNION も含む)は重複を取り除きます。重複を残したいときは UNION ALL を使います。
A. 通常の集合演算(SQL の UNION も含む)は重複を取り除きます。重複を残したいときは UNION ALL を使います。
関連キーワード: 関係データベース、和集合、共通集合、UNION、INTERSECT、UNION ALL、主キー、集合演算

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

