戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2019年 春期 午前(科目A)28


問題文

関係モデルにおいて表Xから表Yを得る関係演算はどれか。
基本情報技術者 2019年 春期 午前(科目A) 問28の問題画像

選択肢

結合(join)
射影(projection)(正解)
選択(selection)
併合(merge)

🔒 解説は解答すると表示されます

射影(projection)演算【午前解説】

正解の理由

正解は (射影:projection)です。表Xと表Yを比べると、すべての行(各商品)の値はそのままで、列が「商品番号」と「数量」に限定されています。関係代数における射影(π)は属性集合を指定して元の関係からその属性だけを取り出す操作です。したがって が成立します。

解法ステップ

  1. 表Xと表Yの列名を比較する(X: 商品番号, 商品名, 価格, 数量 / Y: 商品番号, 数量)。
  2. 行(各タプル)の内容がXの行からそのまま抜き出されているか確認する(値は一致している)。
  3. 行数が減っているか(選択で除外された行があるか)を確認する(今回の例では行は全て残っている)。
  4. 上記より「列の削減のみ」が行われているため、射影(projection)を選ぶ。

選択肢別の誤答解説

  • ア: 結合(join) — 誤り。結合は二つ以上の関係をキーなどで結び合わせて新しいタプルを作る操作です。今回の変換は単一の表から列を抜いただけで結合は不要です。
  • イ: (射影(projection)) — 正解。属性集合を指定して列を取り出す操作で、 に相当します。
  • ウ: 選択(selection) — 誤り。選択は行を条件で抽出(フィルタ)する操作で、例えば「価格 > 40000」のような条件で行が減る場合に用います。本問は列が減っているだけです。
  • エ: 併合(merge) — 誤り。併合は文脈によって意味が曖昧ですが(例:レコードのマージやマージソート、あるいは集合の和)、関係代数で単一表の列を抜き出す操作を指すものではありません。

よくある誤解

  • 「選択(selection)と射影(projection)を混同する」:選択は行(タプル)の条件による絞り込み、射影は列(属性)の削除です。目的が列の削減か行の削減かで区別します。
  • 「結合(join)や併合(merge)と考える」:結合は複数の表を結びつける操作であり、今回のように単一表から列を抜き出すだけでは該当しません。
  • 「SQLのSELECTと関係代数の射影の振る舞いを同一視する」:概念は近いですが、関係代数の射影は重複を排除する点に注意(SQLでは明示的に DISTINCT が必要な場合があります)。

補足コラム

関係代数における射影は形式的には集合演算なので重複タプルを排除します。実務上のSQLでは列を指定するSELECT文が射影に相当しますが、SQLのSELECTはデフォルトで重複を保持するため、関係代数の射影と結果が異なることがあります。例:
-- 関係代数の射影に相当(重複を排除する場合)
SELECT DISTINCT 商品番号, 数量 FROM X;
-- 単なる列抽出(重複を保持)
SELECT 商品番号, 数量 FROM X;
また、設問にある「併合(merge)」は資格試験ではあまり使わない曖昧な用語なので注意が必要です。結合(join)や和集合(union)と混同しないようにしましょう。

FAQ

Q1: 行が減っていたらどの演算になる?
A1: 行が減っている(条件で除外されている)なら選択(selection, σ)が該当します。行と列の両方が変わっていれば選択と射影の組合せです。
Q2: 表Yに重複行がないが表Xには重複がある場合は?
A2: 関係代数の射影では重複は排除されますが、SQLのSELECTでは明示的にDISTINCTを指定しない限り重複が残ります。試験問題では通常関係代数のルールで考えます。
Q3: 「射影」と「プロジェクション」は同じですか?
A3: はい。同じ概念で、英語では projection、和訳で射影またはプロジェクションと表記されます。

関連キーワード: 関係代数、射影、プロジェクション、選択、結合、SQL、SELECT、タプル、属性、リレーショナルデータベース
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について