射影とは?しゃえい
射影とは、関係から指定した属性(列)だけを取り出す関係代数の演算。結果も集合なので、理論上は重複したタプルが取り除かれる。SQLではSELECT句に列を並べる操作が対応するが、SQLは既定で重複を残すため、理論どおりにするにはDISTINCTを書く必要がある。記号はπ(パイ)。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
関係モデルは表を集合として定義したので、同じ内容のタプルが2つ並ぶ状態を認めない。この立場を通す限り、列を落とした結果に重複が現れたら畳むのが筋になる。一方で実際のDBMSは、重複を消すのに並べ替えやハッシュが要るうえ、件数を数えたい場面では消されると困るため、既定を「消さない」に置いた。理論と実装のずれが見える典型例である。
具体例
社員表から氏名と部門コードだけを取り出す。同じ部門に10人いる状態で部門コードだけを取り出すと、理論上は1行に畳まれるが、SQLでSELECT 部門コード FROM 社員と書けば10行返る。SELECT DISTINCTと書いて初めて理論どおりになる。
試験での引っ掛け
n個の属性を持つ関係から作れるこの演算の結果は、各属性を採るか採らないかで2のn乗通り。空の組合せを数に入れるかどうかで答えが1つずれるため、問題文の指定を読むこと。重複除去の扱いも狙われ、関係代数では除かれる/SQLでは書かない限り残る、という食い違いが分かれ目になる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。