基本情報 平成25年度 秋期 問27:テクノロジ系に関する問題
列A1l て A5 から成る R 表に対する次の SQL 文は, 関係代数のどの演算に対応する か。 SELECT A1, A2。 A3 FROM R MHERE A4 =
- a結合と射交
- b差と選択
- c選択と射影正答
- d和と射影
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは c「選択と射影」 です。
SQLの `SELECT A1,A2,A3 FROM R WHERE A4='xx'` を関係代数で読み解くと:
- `WHERE A4='xx'`:条件に合う行を選び出す → 選択
- `SELECT A1,A2,A3`:欲しい列だけ取り出す → 射影
つまり「行を選ぶ+列を絞る」の組合せ。
👉 覚え方:WHEREは『選択』(行)/SELECTは『射影』(列)。
ほかの選択肢:a 結合=表をくっつける/b 差=引き算/d 和=足し算。今回の式には複数表や集合演算がないのでこれらは違います。
なぜこれが正解か
正解は c。関係代数の基本演算とSQLは次のように対応する:
- 選択(Selection, σ)= `WHERE` 句で行を絞り込む
- 射影(Projection, π)= `SELECT` 句で列を絞り込む
本問SQL `SELECT A1,A2,A3 FROM R WHERE A4='xx'` は σ_A4='xx'(R) で行選択 → π_A1,A2,A3(...) で列射影、つまり選択と射影の合成。
各選択肢の解説
- a 結合(Join)と射影:結合はJOIN句または複数表のFROMが必要。本問は単一表。
- b 差(Difference)と選択:差はEXCEPT/MINUSが必要。
- d 和(Union)と射影:和はUNIONが必要。
覚え方・ひっかけ注意
「WHERE=選択(行)/SELECT=射影(列)」は鉄板。日本語の「選択」が`SELECT`に対応すると勘違いしがちだが逆。関係代数の「選択σ」は行抽出、「射影π」は列抽出。基本5演算は選択・射影・直積・和・差、追加2演算が結合・商。
理論的背景
関係代数(Relational Algebra)はE.F.Coddが提唱した関係モデルの基礎理論で、関係(テーブル)に対する閉じた演算系を成す。基本演算は和(∪)・差(−)・直積(×)・選択(σ)・射影(π)の5つ。ここから派生演算として結合(⋈、自然結合 etc.)・商(÷)・共通集合(∩)が定義される。任意のSQLクエリは関係代数式に変換可能で、これがRDBMSのクエリ最適化の理論的基盤となる。
実務での使われ方
RDBMSのオプティマイザはSQL文をパース→関係代数の論理プラン化→等価変換規則による書換え(push-down最適化など)→物理プラン選択、という流れで実行計画を生成する。例えば選択の前倒し(σの早期適用)で中間結果を減らす最適化は、関係代数の等価変換`σ_p(R⋈S) = σ_p(R)⋈S`に基づく(p がRの属性のみに依存する場合)。射影も同様に早期適用でデータ転送量を削減できる。
試験での位置づけ
FE午前のデータベース分野で頻出。①関係代数演算記号σ/π/⋈/∪/−/×の理解、②SQLとの対応関係、③等価変換の理解、の3レベルで問われる。AP・高度(DBスペシャリスト)では結合の種類(自然結合・等結合・外結合・半結合)、商演算の意味、関係完備性(リレーショナル完全性)まで踏み込む。
選択肢の発展補足
SQL の `GROUP BY` +集約関数は関係代数の「拡張」演算(集約γ)で扱う。標準関係代数では表現できない演算(集約・順序・外部結合)はSQL92以降に拡張された。NULL の三値論理(True/False/Unknown)はSQLでの選択演算結果に影響し、`WHERE col = NULL` が常にUnknownになる罠は実務で頻発。理論と実装の差異を理解することがDB設計の鍵。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成25年度 秋期 問27/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。