応用情報技術者試験 令和4年秋 午前問27 解説付き過去問
問題
"従業員"表に対して"異動"表による差集合演算を行った結果はどれか。


正解
解説
この問題は、リレーショナルデータベースにおける集合演算の一つである「差集合演算(差演算、EXCEPT)」の結果を求めるものです。差集合演算は、二つの表のうち、一方の表に存在し、もう一方には存在しない行を抽出する操作です。
- 差集合演算の定義
差集合演算は、集合Aから集合Bを引いたとき、Aに存在してBに存在しない要素の集合を返します。SQLの文法で表すと、次のような形になります。
SELECT * FROM A
EXCEPT
SELECT * FROM B;
つまり、表Aのうち、表Bと同一の行として一致しないものだけが残ります。 - 問題におけるデータの構成
問題の表では、「従業員」表と「異動」表が与えられています。両表は同じ列構成(社員番号、氏名、所属)を持っており、差集合演算は従業員表から異動表に含まれるレコードを除いた結果となります。
「従業員」表にあるうち、「異動」表に存在しないレコードを調べると、次の2件が該当します:
- 社員番号:1002、氏名:鈴木、所属:人事
- 社員番号:1005、氏名:伊藤、所属:総務
これら2件の情報が差集合の結果として残ることになります。 - 選択肢の確認
与えられた選択肢の中で、上記の2レコードのみが記載されたものを確認すると、該当するのは下記の選択肢です。
したがって、従業員表から異動表を差し引いた差集合の結果には、
「社員番号1002:鈴木(人事)」と「社員番号1005:伊藤(総務)」が含まれます。