基本情報技術者 2010年 秋期 午前(科目A) 問30
問題文
関係データベースにおいて、表から特定の列を得る操作はどれか。
選択肢
ア:結合
イ:削除
ウ:射影(正解)
エ:選択
##: 関係データベースにおいて、表から特定の列を得る操作はどれか。【午前2 解説】
要点まとめ
- 結論:ウの射影(projection)が正解です。射影は関係代数で表から指定した列だけを取り出す操作です。
- 根拠:関係代数では射影を と表記し列(属性)の抽出を表現、選択は行抽出と役割が明確に異なります。
- 差がつくポイント:選択(selection)は行の条件指定、結合は複数表の統合、削除はデータ変更で用途が明確に分かれます。
正解の理由
正解は ウ(射影)です。関係代数における射影(projection)は、ある表(関係)から特定の列(属性)のみを取り出す演算を指します。記法では一般に
のように表し、例えば は Employee 表から name と age の列だけを取り出します。したがって「表から特定の列を得る操作」は射影を意味します。
よくある誤解
- 検索条件で行が減る「選択(selection)」と列が減る「射影」を混同し、列の抽出を行の抽出と誤答するケース。
- SQLのSELECTは「射影に相当する」と教わるが、SQLでは重複行の扱いが関係代数と異なる点を見落とす誤解。
- 「削除(DELETE)」を「列を消す操作」と誤解し、データ定義やデータ操作の区別をつけられない点。
解法ステップ
- 問題文から「表から特定の列を得る」とある語句に注目する。列=属性=カラムに対応する操作を探す。
- 関係代数の基本演算を思い出す:射影(列抽出)、選択(行抽出)、結合(表結合)、集合演算など。
- 各選択肢を対応付ける:結合=複数表統合、削除=DMLのデータ削除、選択=行の抽出、射影=列の抽出。
- 列の抽出に該当する射影を選ぶ。
選択肢別の誤答解説
- ア: 結合 — 複数の表をキーで結び付けて行や列を増やす操作で、特定の列だけを抜き出す意味とは異なります。
- イ: 削除 — テーブルから行やデータを消す操作(DML)であり、列抽出の操作ではありません。
- ウ: 射影 — 正解。関係代数の射影は指定列のみを取り出す演算で、問題文の定義に一致します。
- エ: 選択 — 行を条件で絞り込む操作(selection)で、列を指定して抜き出す射影とは役割が異なります。
補足コラム
- SQLとの対応:関係代数の射影は SQL の SELECT に相当します。例えば列 name と age を取り出す例は次の通りです。
SELECT name, age FROM Employee;
ただし関係代数の射影は集合の意味で重複を除くのが標準ですが、SQL の SELECT は重複を残すため重複除去には DISTINCT を使います。
- 用語整理:射影=projection=列抽出、選択=selection=行抽出、結合=join、削除=delete(DML)です。設問では「列を得る」と明言されているため射影と判断します。
FAQ
Q1. 射影は行を減らすこともありますか?
A1. 関係代数の射影自体は列を選ぶ操作ですが、結果として同一の行(全ての選択列で同じ値)が重複する場合、集合として重複が除かれるため行数が減ることがあります。SQLではデフォルトで重複は残る点に注意してください。
A1. 関係代数の射影自体は列を選ぶ操作ですが、結果として同一の行(全ての選択列で同じ値)が重複する場合、集合として重複が除かれるため行数が減ることがあります。SQLではデフォルトで重複は残る点に注意してください。
Q2. 「選択」と「射影」を判別するコツは?
A2. 「条件で絞る(例:年齢が30以上)」なら選択(行の抽出)。「取り出す列を指定(例:名前と年齢)」なら射影(列の抽出)です。
A2. 「条件で絞る(例:年齢が30以上)」なら選択(行の抽出)。「取り出す列を指定(例:名前と年齢)」なら射影(列の抽出)です。
Q3. 結合と射影を同時に使う例は?
A3. 複数表を結合してから必要な列だけを取り出すのは一般的です。SQLでは JOIN と SELECT の組合せで実現します。
A3. 複数表を結合してから必要な列だけを取り出すのは一般的です。SQLでは JOIN と SELECT の組合せで実現します。
関連キーワード: 関係代数、射影、選択、結合、属性、列、SQL、SELECT、DELETE、projection、selection

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

