ITパスポート 2018年 春期 問65
問題文
関係データベースの操作a〜cと、関係演算の適切な組合せはどれか。
a 指定したフィールド(列)を抽出する。
b 指定したレコード(行)を抽出する。
c 複数の表を一つの表にする。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
関係データベースの操作と関係演算の組合せ【ITパスポート 解説】
正解の理由
設問の a〜c は、それぞれ「列(フィールド)を抽出する」「行(レコード)を抽出する」「複数の表を一つにする」を表しています。関係データベースの基本的な演算では、これらに対応する語は次のとおりです。
- 射影(projection:列を抽出する演算) → 指定したフィールド(列)を取り出す。
- 選択(selection:行を抽出する演算) → 条件に合うレコード(行)だけを取り出す。
- 結合(join:複数の表をキーでつなぎ、一つの表にする演算) → 別々の表を結び付けて、関連する列をまとめる。
したがって a は「射影」、b は「選択」、c は「結合」で並んでいる行(つまり表の組合せ)は ウ の行になります。これが正解である理由は、定義が設問の説明と完全に一致するためです。
解法ステップ
- 問題文の a〜c を一つずつ読み、何をしているかを言葉で確かめる。
- a:「フィールド(列)を抽出」→ 列を取り出す操作。
- b:「レコード(行)を抽出」→ 行を絞る操作。
- c:「複数の表を一つにする」→ 表どうしを結び付ける操作。
- 関係演算の基本を思い出す(射影=列、選択=行、結合=表の結び付け)。
- 選択肢の表と照らし合わせ、各列に当てはまる語をマッチさせる。
- a→射影、b→選択、c→結合の並びがある行が正解(ウ)。
選択肢別の誤答解説
- ア行(a: 結合、b: 射影、c: 選択)
誤り。a が「列を抽出」なのに「結合(複数表を結び付ける)」になっており不一致。b も「射影」は列抽出なのに b は行抽出を指すため合わない。 - イ行(a: 射影、b: 結合、c: 選択)
一部合っているが、b が「結合」となっており、b は行を抽出する動作なので「選択」が正しい。 - ウ行(a: 射影、b: 選択、c: 結合)
正しい組合せ。a が列、b が行、c が表の結合という定義どおり。 - エ行(a: 選択、b: 射影、c: 結合)
a と b が逆になっている。a は列抽出なので「射影」でなければならず、ここは誤り。
よくある誤解
- 「選択」と「射影」を混同する
- 選択(行を絞る)と射影(列を抜き出す)は目的が違います。選択は条件でフィルタする(例:年齢 > 30 の人だけ)、射影は必要な列だけ残す(例:名前と電話番号だけ)。
- 「結合」と「合併(集合の和・UNION)」を混同する
- 結合(join)は異なる表をキーで横につなげる操作です。合併(UNION)は同じ構造の表を縦に並べて行を増やす操作で、目的が異なります。
補足コラム
- SQL(Structured Query Language:データベース操作言語)では、見た目が少し違いますが同じ考え方です。
- 射影は SELECT 列名 ... で表します(例:SELECT name, age)。
- 選択は WHERE 条件 ... で表します(例:WHERE age > 30)。
- 結合は JOIN を使って行います(例:FROM A JOIN B ON A.key = B.key)。
つまり、SQL の「SELECT」は列を指定することで「射影」の働きをし、同じ文の WHERE 節で「選択」を行うことが多い点に注意してください。
SQLの簡単な例:
-- 射影と選択
SELECT name, age
FROM employees
WHERE age > 30;
-- 結合(部門名を合わせて表示)
SELECT e.name, d.department_name
FROM employees e
JOIN departments d ON e.dept_id = d.id;
FAQ
Q1. 「射影」と「SELECT」は同じですか?
A1. 概念的には同じです。射影は列の抽出を指すリレーショナル代数の用語で、SQL の SELECT 句で列を指定する操作がこれに当たります。ただし SQL の SELECT 文は列指定(射影)と条件指定(選択)を一つの文で行える点が実務では混乱の元になります。
A1. 概念的には同じです。射影は列の抽出を指すリレーショナル代数の用語で、SQL の SELECT 句で列を指定する操作がこれに当たります。ただし SQL の SELECT 文は列指定(射影)と条件指定(選択)を一つの文で行える点が実務では混乱の元になります。
Q2. 「結合」と「UNION」はどう違いますか?
A2. 結合(join)は表を横にくっつけて関連情報をまとめます(例:社員テーブルと部署テーブルを部署IDで結ぶ)。UNION は同じ列構成の表を縦に並べて行数を増やします(例:前年と今年の売上表を合体)。
A2. 結合(join)は表を横にくっつけて関連情報をまとめます(例:社員テーブルと部署テーブルを部署IDで結ぶ)。UNION は同じ列構成の表を縦に並べて行数を増やします(例:前年と今年の売上表を合体)。
Q3. 覚え方のコツはありますか?
A3. 短く:行を選ぶ→選択(selection)、列を選ぶ→射影(projection)、表を合わせる→結合(join)。スプレッドシートで考えるとイメージしやすいです。
A3. 短く:行を選ぶ→選択(selection)、列を選ぶ→射影(projection)、表を合わせる→結合(join)。スプレッドシートで考えるとイメージしやすいです。
関連キーワード: 関係データベース、射影、選択、結合、リレーショナル代数、SQL、JOIN、WHERE、SELECT

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

