基本情報技術者 2019年 秋期 午前(科目A) 問27
問題文
関係モデルにおいて、関係から特定の属性だけを取り出す演算はどれか。
選択肢
ア:結合(join)
イ:射影(projection)(正解)
ウ:選択(selection)
エ:和(union)
関係モデルにおいて、関係から特定の属性だけを取り出す演算はどれか。【午前2 解説】
要点まとめ
- 結論→関係モデルで特定の属性だけを取り出す演算は射影(projection)であり列(属性)単位で抽出する操作です。
- 根拠→射影は関係代数で と表され、各タプルの属性集合を削減して出力するため属性(列)を取り出します。
- 差がつくポイント→選択は行(タプル)の絞り込み、結合は関係の結合、和はスキーマ一致が前提である点を正確に区別しましょう。
正解の理由
正解:イ(射影;projection)
射影は「関係(表)から特定の属性(列)だけを取り出す」操作を指します。関係代数ではしばしば のように書き、関係 R の各タプルから属性 A, B の値だけを取り出して新しい関係を作ります。問題文の「特定の属性だけを取り出す」という記述はまさに射影の定義と一致します。
射影は「関係(表)から特定の属性(列)だけを取り出す」操作を指します。関係代数ではしばしば のように書き、関係 R の各タプルから属性 A, B の値だけを取り出して新しい関係を作ります。問題文の「特定の属性だけを取り出す」という記述はまさに射影の定義と一致します。
よくある誤解
- 「選択(selection)も属性を指定するから同じ」と思う誤解:選択は属性に基づく条件で行(タプル)を絞る操作であり、列を取り出す操作ではありません。
- SQL の SELECT と射影を同一視する際の誤解:SQL の SELECT は射影に相当しますが、デフォルトで重複を残すため(集合演算的な射影とは挙動が異なる)注意が必要です。
- 結合と射影を混同する誤解:結合は複数の関係をキーで結び付けて新しいタプルを作る操作で、列抽出そのものではありません。
解法ステップ
- 問題文を読んで「特定の属性だけを取り出す」とある点を把握する。
- 各選択肢の操作の定義を確認する(結合=複数表の結合、射影=列抽出、選択=行絞り、和=集合和)。
- 「属性=列」を直接取り出す操作は射影であるため、イを選ぶ。
選択肢別の誤答解説
- ア: 結合(join)
誤り。結合は複数の関係をキーなどで結びつけて新しいタプルを作る操作で、属性を抽出する目的とは異なります(列は増えることが多い)。 - イ: 射影(projection)
正解。関係から特定の属性(列)だけを取り出して新しい関係を作る操作で、関係代数では で表記します。 - ウ: 選択(selection)
誤り。選択は条件を満たすタプル(行)だけを取り出す操作であり、行の絞り込みに相当します。 - エ: 和(union)
誤り。和は二つの関係の和集合を取る操作で、スキーマ(属性の集合)が同じであることが前提です。属性の抽出操作ではありません。
補足コラム
- 関係代数記法の例:射影は 、選択は 、結合は 、和は と書きます。
- SQL との対応:SQL の
SELECT 列1, 列2 FROM R
は射影に相当しますが、SQL は集合ではなく多重集合(重複行を許す)扱いのため、厳密な関係代数の射影と挙動が異なります。重複を除くにはSELECT DISTINCT
を使います。 - 射影は「属性の集合を減らす」ため、結果の関係の「アリティ(列数)」が小さくなります。
コード例(SQL)
-- 射影に相当(属性のみ抽出、重複は残る) SELECT name, age FROM person; -- 選択に相当(行を絞る) SELECT * FROM person WHERE age >= 18;
FAQ
Q1: 射影は重複行をどう扱いますか?
A1: 関係代数の射影は集合として扱うため重複を除きますが、SQL の
A1: 関係代数の射影は集合として扱うため重複を除きますが、SQL の
SELECTはデフォルトで重複を残します。重複を除きたい場合は
SELECT DISTINCTを使います。
Q2: 選択と射影を同時に使う順序は重要ですか?
A2: 一般に射影と選択は順序によって冗長性や効率に影響します。選択で先に行数を減らしてから射影する方が効率的な場合が多いですが、結果自体は式の内容によって同等となることもあります。
A2: 一般に射影と選択は順序によって冗長性や効率に影響します。選択で先に行数を減らしてから射影する方が効率的な場合が多いですが、結果自体は式の内容によって同等となることもあります。
Q3: 和(union)は属性が違っても使えますか?
A3: いいえ。和はスキーマ(属性名と数)が一致する関係同士でしか適用できません。属性が異なれば整合性を取る必要があります。
A3: いいえ。和はスキーマ(属性名と数)が一致する関係同士でしか適用できません。属性が異なれば整合性を取る必要があります。
関連キーワード: 関係モデル、関係代数、射影、選択、結合、和集合、列抽出、属性、タプル、SQL、π、σ、projection、selection、join、union

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

