関係代数では、射影はと記述される単項演算であり、 は関係であり、 は属性名である。その結果は、の組の要素が集合に制限されたときに得られる集合として定義され、他の属性は破棄(または除外)される。 [1]
実用的には、関係をテーブルと考えると、投影はその列のサブセットを選択することと考えることができます。たとえば、属性が (name, age) の場合、関係 {(Alice, 5), (Bob, 8)} を属性リスト (age) に投影すると、{5,8} が生成されます。つまり、名前は破棄され、存在する年齢のみがわかります。
射影は属性値を変更することもあります。たとえば、が属性、、を持ち、 の値が数値である場合、 は に 似ていますが、すべての-値が半分になります。[2]
関連概念
集合論における密接に関連する概念(参照:投影 (集合論) ) は、集合論では属性ではなく順序付けられたコンポーネントに投影するという点で、関係代数の概念とは異なります。たとえば、2 番目のコンポーネントに投影すると、7 になります。
投影は、述語論理における存在量化のリレーショナル代数における対応物です。含まれていない属性は、オペランド関係が表す拡張の述語における存在量化された変数に対応します。以下の例はこの点を示しています。
存在量化との対応のため、一部の権威者は除外された属性の観点から投影を定義することを好みます。コンピューター言語では、もちろん両方の表記法を提供することが可能であり、ISBLおよび ISBL からヒントを得たいくつかの言語ではそれが行われました。
ほぼ同一の概念がモノイドのカテゴリに存在し、文字列射影と呼ばれます。これは、文字列内の特定のアルファベットに属さない文字をすべて削除することから構成されます。
SQL標準で実装されている場合、「デフォルトの投影」はセットではなく マルチセットを返し、重複データを削除するキーワードを追加することでπ投影が得られます。
DISTINCT
例
たとえば、次の 2 つの表に示されている関係、つまり関係Personと、その属性AgeおよびWeightへの (一部の人は「上」と言う) 投影について考えてみましょう。
Person の述語が「Nameはage歳で、体重はweightです」であるとします。この場合、指定された射影は述語「Nameがage歳で、体重がweight であるNameが存在する」を表します。
ハリーとピーターの年齢と体重は同じですが、結果は関係であり、したがってセットであるため、この組み合わせは結果に 1 回だけ表示されることに注意してください。
正式な定義
より正式には、投影のセマンティクスは次のように定義されます。
集合に対する組の制限は、
ここで、は属性値、は属性名、 はその属性のドメインの要素です。 「 リレーション (データベース) 」を参照してください。
射影の結果は、が のヘッダーのサブセットである場合にのみ定義されます。
属性をまったく持たない射影も可能で、その結果は次数 0 の関係になります。この場合、オペランドが空であれば結果のカーディナリティは 0 になり、それ以外の場合は 1 になります。次数 0 の 2 つの関係は、テーブルとして表すことができない唯一の関係です。
参照
参考文献
- ^ 「リレーショナル代数」 cs.rochester.edu . 2014年7月28日閲覧。
- ^ http://www.csee.umbc.edu/~pmundur/courses/CMSC661-02/rel-alg.pdf 3ページの問題3.8.Bを参照
