この概念が出た関連問題

この試験の対策ガイド

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

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

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

正解は イ

解説

関係モデル(リレーショナルモデル)の関係演算に関する問題です。関係演算には主に、選択(selection)・射影(projection)・結合(join)の3つがあり、これに集合演算(和・差・積など)が加わります。「関係(表)から特定の属性(列)だけを取り出す演算」は射影です。例えば社員表(社員番号、氏名、部署、給与)から氏名と部署の2列だけを取り出す操作が射影に当たります。イが正解です。混同しやすいのは選択との違いで、選択は条件に合致する「行(タプル)」を取り出す演算です。「射影=列(縦)を切り出す」「選択=行(横)を切り出す」と対で覚えるのが定石です。結合は2つ以上の表を共通の属性の値で連結して1つの表にする演算、和は同じ構造をもつ2つの表のタプルを合わせる集合演算です。SQL との対応では、射影は SELECT 句の列指定、選択は WHERE 句、結合は JOIN に相当します。関係演算と SQL の対応付けを意識すると記憶が定着しやすくなります。

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

選択肢 ア
結合(join)は、2つ以上の関係(表)を共通する属性の値を手がかりに連結して、1つの関係にまとめる演算です。例えば社員表と部署表を部署コードでつなげて「社員と所属部署名の一覧」を作る操作が該当します。複数の表を横方向に組み合わせる演算であり、1つの表の中から特定の属性(列)だけを取り出す射影とは、演算の目的も対象もまったく異なります。
選択肢 ウ
選択(selection)は、関係から条件を満たす「行(タプル)」を取り出す演算です。例えば「給与が30万円以上の社員の行だけを取り出す」操作が該当します。本問が問うているのは「属性(列)だけを取り出す」演算なので、行を取り出す選択は誤りです。射影=列、選択=行、という対比はこの分野で最も頻出の引っかけポイントです。
選択肢 エ
和(union)は、同じ属性構成をもつ2つの関係のタプル(行)をすべて合わせて1つの関係にする集合演算です。例えば東京支社の社員表と大阪支社の社員表を合わせて全社の社員表を作る操作が該当します。2つの表を縦方向に合併する演算であり、1つの表の中から特定の属性(列)だけを取り出す射影とは、対象となる表の数も演算の方向もまったく異なります。

解くときのポイント

関係演算は「射影=列を切る(SELECT句)」「選択=行を切る(WHERE句)」「結合=表をつなぐ(JOIN)」と SQL に対応付けて覚える。列か行かを問題文から見極めれば即答。