関係代数では、射影は次のように記述される単項演算である。、 どこ関係であり、は属性名です。その結果は、タプルのコンポーネントが のときに得られるセットとして定義されます。セットに制限される–他の属性を破棄(または除外)します。 [ 1 ]
実際には、リレーションをテーブルと考えると、射影はその列のサブセットを選択することと考えることができます。たとえば、属性が(名前、年齢)である場合、リレーション{(アリス、5)、(ボブ、8)}を属性リスト(年齢)に射影すると、{5、8}が得られます。名前は破棄され、年齢のみがわかります。
投影によって属性値が変更される場合もあります。たとえば、属性を持つ、、、その値は数字である場合、 はしかし、すべてにおいて-値は半分になった。[ 2 ]
集合論における密接に関連する概念(参照:射影(集合論) )は、関係代数とは異なり、集合論では属性ではなく順序付きコンポーネントに射影する。例えば、射影は2番目の成分に加算すると7が得られます。
射影は、関係代数における述語論理における存在量化に相当するものです。含まれていない属性は、オペランド関係が表す外延を持つ述語における存在量化された変数に対応します。以下の例はこの点を説明しています。
存在量化との対応関係から、一部の専門家は除外属性を用いて射影を定義することを好む。コンピュータ言語ではもちろん両方の表記法を提供することが可能であり、ISBLやISBLに倣ったいくつかの言語ではそれが実現されている。
モノイドのカテゴリーにもほぼ同じ概念があり、それは文字列射影と呼ばれ、文字列から特定のアルファベットに属さないすべての文字を取り除くことから成ります。
SQL標準で実装されている場合、「デフォルト射影」はセットではなく マルチセットを返し、重複データを排除するためのキーワードを追加することでπ射影が得られます。DISTINCT
例えば、次の 2 つの表に示されている関係を考えてみましょう。これは、関係Personと、属性AgeおよびWeightへの (あるいは「上への」) 射影です。
仮に、Person の述語が「Nameはage歳で、体重はweightである」であるとします。すると、与えられた射影は「 Nameが存在し、Nameはage歳で、体重はweightである」という述語を表します。
ハリーとピーターは年齢も体重も同じですが、結果は関係、つまり集合であるため、この組み合わせは結果に一度しか現れません。
より厳密に言えば、射影の意味論は次のように定義される。
どこタプルの制限はセットへとなることによって
どこ属性値です。は属性名であり、は、その属性のドメインの要素です。関係 (データベース)を参照してください。
投影の結果は、以下の場合にのみ定義されます。はヘッダーのサブセットです。
属性を一切含まない射影も可能であり、次数ゼロの関係が得られます。この場合、オペランドが空であれば結果の要素数はゼロ、そうでなければ1となります。次数ゼロの関係は、この2つだけが表として表現できません。