この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

関係演算の種類を問う基本問題です。表X(商品番号、商品名、価格、数量)から表Y(商品番号、数量)が得られています。行(タプル)は5行とも同じで、列(属性)だけが4列から2列に減っています。このように、表から特定の列だけを取り出す関係演算を射影(projection)と呼びます。正解はイです。関係演算の基本3演算は、①射影=列の取り出し、②選択(selection)=条件を満たす行の取り出し、③結合(join)=複数の表を共通の属性で連結、です。見分け方は機械的で、「列が減っていれば射影、行が減っていれば選択、表が2つ以上組み合わさっていれば結合」という形の変化に注目します。本問は行数が変わらず列だけが減っているので、迷わず射影と判定できます。SQLでは射影は SELECT 句の列指定、選択は WHERE 句、結合は JOIN に対応する、という対応関係も併せて理解しておくと、SQLの問題にも応用が利きます。

なぜ他の選択肢は違うのか

選択肢 ア
結合(join)は、二つ以上の表を共通の属性の値で突き合わせて一つの表にまとめる演算です。本問は表Xという一つの表だけから表Yを得ており、他の表との連結は一切行われていません。結合では一般に列数が増える(両方の表の属性が横に並ぶ)方向に変化するため、列が減っている本問の変化とはちょうど逆方向になります。
選択肢 ウ
選択(selection)は、条件を満たす行(タプル)だけを取り出す演算です。例えば「価格が50,000以上の行だけ」を取り出すような操作が選択です。本問では5行すべてがそのまま表Yに残っており、行の絞り込みは行われていません。減っているのは列であって行ではない、という点で選択ではなく射影と判別できます。
選択肢 エ
併合(merge)は、同じ形式の二つの表のタプルをまとめて一つの表にする操作(和集合に相当)を指します。二つの表を入力とする演算であり、一つの表から列を取り出す本問の操作とは異なります。関係演算の問題でこの語が正解になることはまれで、基本3演算(射影・選択・結合)の理解を試すためのダミーとして登場することが多い選択肢です。

解くときのポイント

形の変化で即判別: 列が減る=射影、行が減る=選択、2表をつなぐ=結合。SQLとの対応(SELECT句=射影、WHERE句=選択、JOIN=結合)も覚えておくと一石二鳥。