問題 13★★☆

社員番号・氏名・部署名・内線番号・自宅住所の列をもつ社員表から、 全社員の氏名・部署名・内線番号を載せた内線一覧を作りたい。自宅住所は載せない。 このときに行う関係演算として、最も適切なものはどれか。

正解:イ

各選択肢の解説

  1. ア部署名などの条件を指定し、条件に合う社員の行だけを取り出す。

    誤り。選択の説明です。「取り出す」という言葉が同じなので混同しがちですが、 選択は行を絞る操作で、列はすべて残ります。全社員を載せる一覧なので行を 絞る必要はなく、選択しても自宅住所の列は消えません。

  2. イ社員表から、氏名・部署名・内線番号の列だけを取り出す。

    正解。射影です。表から必要な列だけを縦に切り出す操作なので、 全社員の行を残したまま、自宅住所など載せたくない列を外した一覧が得られます。

  3. ウ部署コードが一致する行どうしで、社員表と部署表を横につなぐ。

    誤り。結合の説明です。別の表にしかない情報を加えたいときに使います。 今回必要な氏名・部署名・内線番号はすべて社員表にあるので、ほかの表と つなぐ必要はありません。つないでも自宅住所の列は残ったままです。

  4. エ列の構成が同じ二つの表を比べ、一方にだけある行を取り出す。

    誤り。差の説明です。社員表から退職者の表にある社員を除く、といった 二つの表を突き合わせる場面で使います。行を減らす操作であり、 列には手を加えないので、自宅住所を外すことはできません。

理解を深めるために

名簿から見せたい欄だけを写し取る

紙の社員名簿を縦の欄ごとに見て、「氏名」「部署」「内線」の3つの欄だけを 別の紙に写すところを想像してください。人数は減らず、欄だけが減ります。 関係データベースでこれにあたる操作が射影です。

なぜ射影なのか

問題文の条件を、行と列に分けて整理します。

  • 行について … 全社員を載せる。つまり行は絞らない
  • 列について … 氏名・部署名・内線番号だけを残し、社員番号や自宅住所は外す

行はそのままで列だけを減らしたいので、射影が当てはまります。 もし「営業部の社員だけの内線一覧」を作るなら、先に選択で営業部の行に絞り、 そのうえで射影によって列を選ぶ、という組み合わせになります。

結果の形で見ると次のとおりです(社員が100人の場合)。

  • 射影の結果 … 3列。行は全社員分(内容がまったく同じ行があれば1行にまとまる)
  • 選択の結果(営業部が20人なら) … 20行・5列のまま

混同しやすい操作との違い

操作 何をするか 変わるもの
選択 条件に合う行を取り出す 行が減る
射影 指定した列を取り出す 列が減る
結合 共通する項目の値で二つの表を横につなぐ 列が増える
差 一方の表にだけある行を取り出す 行が減る

試験では「行を減らしたいのか、列を減らしたいのか」を問題文から先に読み取ると、 選択と射影を取り違えずに済みます。

前の問題へ次の問題へ