ITパスポート 2022年 問98
問題文
関係データベースで管理している“従業員”表から、氏名の列だけを取り出す操作を何というか。

選択肢
ア:結合
イ:射影(正解)
ウ:選択
エ:和
🔒 解説は解答すると表示されます
従業員表から氏名の列だけを取り出す操作は何か【ITパスポート 解説】
正解の理由
設問では「従業員表から、氏名の列だけを取り出す」とあります。ここで注目すべきは「列だけを取り出す」ことです。関係データベース(表形式でデータを管理する仕組み)で列だけを選ぶ操作は、リレーショナル代数で「射影(projection)」と呼ばれます。したがって正解は イ です。
射影は英語の "projection" に対応し、表から必要な列(項目)だけを取り出す操作を指します。例えば SQL(Structured Query Language:データベースに問い合わせる言語)では列を指定して取り出すのがこれに相当します。
解法ステップ
- 問題文で何を取り出すのかを確認する:「氏名の列だけ」=列(カラム)を対象。
- 操作の種類を分類する:
- 列を選ぶ操作 → 射影(projection)
- 行を絞る操作(条件でフィルタ) → 選択(selection)
- 別の表と組み合わせる → 結合(join)
- 複数表の行を合わせる → 和(union)
- 上から該当する操作を当てはめると列選択に該当するので イ(射影)と判断。
選択肢別の誤答解説
-
ア: 結合
- 結合(join)は複数の表をキー(共通の列)で結びつけて、関連する情報を1つの結果にまとめる操作です。今回の問題は1つの表から列を取り出すだけなので当てはまりません。
-
イ: 射影
- 正解。射影は指定した列だけを取り出す操作です。言い換えると「表を横方向に切り取る」イメージです。
-
ウ: 選択
- 選択(selection)は行を条件で絞る操作です。たとえば「所属コードが G03 の従業員だけ」を取り出すときは選択です。今回の「氏名の列だけ」は行の絞りではないので違います。
-
エ: 和
- 和(union)は構造が同じ複数の表を縦に結合して行を合成する操作です(重複の扱いに注意)。単一の表から列を抽出する今回の操作とは異なります。
よくある誤解
- 「SQL の SELECT は選択(selection)だと思っている」
- 日本語的に「選ぶ」という意味から混同しやすいですが、SQL の SELECT 文は列を指定して取り出すことが主な用途で、リレーショナル代数での射影に相当します(WHERE 節があると行の絞り=選択の処理も行います)。
- 「射影は行も消す(フィルタリングする)と思っている」
- 射影は基本的に列の抽出です。リレーショナル代数の理論上は重複行を取り除く(集合として扱う)ことがありますが、実務の SQL では重複を残すか除くかは DISTINCT 指定で制御します。
補足コラム
- SQL の例:従業員表から氏名の列だけを取り出す典型的なコマンドは次の通りです。SQL は Structured Query Language(構造化照会言語)という意味です。
-- 氏名の列だけを取り出す(SQL)
SELECT 氏名
FROM 従業員;
- リレーショナル代数では射影は π(パイ)という記号で表現され、例えば π_{氏名}(従業員) のように書きます。
- 実務で注意する点:リレーショナル代数の射影は集合として扱うので同じ氏名が複数あれば重複は 1 つにまとめられる扱い(集合の性質)になることがあります。一方、SQL の SELECT はデフォルトではすべての行を返す(重複あり)ため、重複を除きたい場合は SELECT DISTINCT を使います。
FAQ
Q1: 「列を取り出す=射影なのに、SQL の SELECT は選択と呼ばれることがあるのはなぜですか?」
A1: 日常語の「選ぶ」と混同されやすいからです。SQL の SELECT は主に列を指定するため、リレーショナル代数の射影に相当します。WHERE を使うと行の選択(selection)も同時に行います。
A1: 日常語の「選ぶ」と混同されやすいからです。SQL の SELECT は主に列を指定するため、リレーショナル代数の射影に相当します。WHERE を使うと行の選択(selection)も同時に行います。
Q2: 射影で重複が消えるのはいつですか?
A2: リレーショナル代数の定義上は集合として扱うため重複は消えますが、実際の SQL では重複を除きたいときに DISTINCT を指定します(例:SELECT DISTINCT 氏名 FROM 従業員;)。
A2: リレーショナル代数の定義上は集合として扱うため重複は消えますが、実際の SQL では重複を除きたいときに DISTINCT を指定します(例:SELECT DISTINCT 氏名 FROM 従業員;)。
Q3: 「結合」と「和」の違いが簡単に知りたいです。
A3: 結合は別々の表を関連列で横に結びつけて新しい列を増やす操作です。和は同じ構造の表同士を縦に並べて行を増やす操作です。
A3: 結合は別々の表を関連列で横に結びつけて新しい列を増やす操作です。和は同じ構造の表同士を縦に並べて行を増やす操作です。
関連キーワード: 関係データベース、射影、選択、結合、和(集合演算)、SQL、SELECT、列(カラム)、行(レコード)、リレーショナル代数

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

