基本情報技術者 2014年 春期 午前(科目A) 問27
問題文
関係データベースの操作のうち、射影(projection)の説明として、適切なものはどれか。
選択肢
ア:ある表の照会結果と、別の表の照会結果を合わせて一つの表にする。
イ:表の中から特定の条件に合致した行を取り出す。
ウ:表の中から特定の列だけを取り出す。(正解)
エ:二つ以上の表の組から条件に合致した組同士を合わせて新しい表を作り出す。
🔒 解説は解答すると表示されます
射影(projection)【午前解説】
正解の理由
選択肢の中で「表の中から特定の列だけを取り出す。」が射影(projection)の定義そのものであり、これが正解です。関係代数で射影は記号πを用いて表現され、SQLでは SELECT 列名 FROM 表 の列指定部分が対応します。したがって正解は ウ です。
解法ステップ
- 問題文で「列」「行」「表の組」「合わせて一つの表」などのキーワードを探す。
- 「列」を指定している記述は射影(projection)、「行(条件)」を指定している記述は選択(selection)に対応する。
- JOINやUNIONの説明語(組を合わせる、条件に合致した組同士を合わせるなど)があれば射影ではないと判断する。
- 選択肢を対応付けて、列抽出を示すものを正解とする。
選択肢別の誤答解説
- ア: 「ある表の照会結果と、別の表の照会結果を合わせて一つの表にする。」
→ これは集合演算(和集合や結合など)やUNIONに近く、射影の定義とは異なります。 - イ: 「表の中から特定の条件に合致した行を取り出す。」
→ 行の抽出は選択(selection、σ)の説明であり、射影ではありません。 - ウ: 「表の中から特定の列だけを取り出す。」
→ これが射影(projection)の定義です。従って正解は ウ です。 - エ: 「二つ以上の表の組から条件に合致した組同士を合わせて新しい表を作り出す。」
→ これは結合(JOIN)または直積+選択による結合の説明であり、射影とは別操作です。
よくある誤解
- 射影を「行を選ぶ操作(条件で抽出)」と混同する受験者が多いです。行の抽出は選択(selection、σ)です。
- 関係代数の射影は重複を排除する(集合として扱う)という点を忘れて、SQLのSELECT(重複を許す)と同一視する誤りがあります。
- 結合(JOIN)や集合演算(UNION)など「複数表を合わせる操作」と射影を区別せずに選ぶミスがあります。
補足コラム
関係代数とSQLの対応を覚えておくと理解が早いです。代表的な対応は以下の通りです。
- 関係代数の射影(π) → SQL の SELECT 列名 FROM 表(必要に応じて DISTINCT)
- 関係代数の選択(σ) → SQL の WHERE 条件
- 関係代数の結合(⋈) → SQL の JOIN ... ON ... / FROM ... WHERE ...
例(概念説明)
- 関係代数: π_{名前, 年齢}(社員) は社員表から「名前」と「年齢」だけを取り出す。
- SQL 相当: SELECT 名前, 年齢 FROM 社員;
注意:関係代数の射影は集合としての重複排除を意味しますが、SQLのSELECTはデフォルトで重複を残します。重複を取り除くには SELECT DISTINCT 名前, 年齢 FROM 社員; を使います。
FAQ
Q1: SQLのSELECTと関係代数の射影は完全に同じですか?
A1: 基本的な「列を選ぶ」点は同じですが、関係代数の射影は集合の性質で重複を排除するのに対し、SQLのSELECTはデフォルトで重複を残します(DISTINCTで排除可能)。
A1: 基本的な「列を選ぶ」点は同じですが、関係代数の射影は集合の性質で重複を排除するのに対し、SQLのSELECTはデフォルトで重複を残します(DISTINCTで排除可能)。
Q2: 射影は行の順序を保ちますか?
A2: 関係モデルは集合(または集合に近い)として扱うため順序は保証されません。SQLで順序を保証するには ORDER BY を使います。
A2: 関係モデルは集合(または集合に近い)として扱うため順序は保証されません。SQLで順序を保証するには ORDER BY を使います。
Q3: 「列だけ取り出す」と「行だけ取り出す」を同時に行える操作はありますか?
A3: はい、関係代数では選択(σ)と射影(π)を組み合わせることができます(例:π_{列}(σ_{条件}(表)))。SQLでも WHERE と 列指定 の組み合わせで実現します。
A3: はい、関係代数では選択(σ)と射影(π)を組み合わせることができます(例:π_{列}(σ_{条件}(表)))。SQLでも WHERE と 列指定 の組み合わせで実現します。
関連キーワード: 関係代数、射影、projection、選択、selection、結合、JOIN、SQL SELECT、SELECT DISTINCT、π、σ、リレーショナルモデル

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

