17.05 - 外部結合の関係代数 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

関係代数と関係論理は、関係を操作するために使用する2つの異なる、しかし同等の形式言語です。代数が手続き型であり、問合わせの最適化ルーチンとデータベース マネージャが操作できる、問合わせの内部表記用であるのに対して、論理は非手続き型であって、ユーザーによって適用可能な問合わせ言語の基礎となります。

基本的な問合わせSELECT-FROM-WHERE (問合わせ用に一般化された非手続き型関係論理のSQL表現形式)は、関係代数の形式で記述し直すことができます。そうするには、以下のようにします。

     projection ( restriction ( product ) )

説明:

構文要素 指定内容
projection 1つ以上の関係から1つ以上の属性を抽出するPROJECT演算子を適用した結果。

これはSQL SELECT ... FROMを定義します。projectionはテーブルから列を選択します。

restriction projectionから1つまたは複数の組を抽出するRESTRICT(またはSELECT)演算子を適用した結果。

関係代数のSELECTは、SQLのSELECT文とは異なります。これは、本質的にはPROJECT演算とRESTRICT演算を実行します。

restrictionはSQL SELECT文のWHERE、ON、およびQUALIFY句を定義します。restrictionは、テーブルから修飾された行を選択します。結合条件が存在していれば、restrictionは結合によって作成された中間結果テーブルから修飾された行を選択します。

product 指定した各々の関係から、組の可能性のある組合わせすべてを作成するPRODUCT演算子を適用した結果。

これは結合を定義します。具体的には、内部結合です。

表現を明確にするには、元の式をprojection (内部結合)として再度記述します

外部結合の関係代数

外部結合は残りの組を指定した内部結合の結果を、内部結合の結果テーブルの組と共通点のない結合関係のいずれか(または両方)にマージします。

外部結合はリレーショナル代数で以下のように表現できます。

     projection ( inner_join UNION ALL extension )

説明:

構文要素 指定内容
projection 1つ以上の関係から1つ以上の属性を抽出するPROJECT演算子を適用した結果。
inner_join RESTRICT(またはSELECT)演算子をprojection内の関係のPRODUCTに適用した結果。
UNION ALL UNION ALL演算子。

UNION ALLは重複行を許可するため。これは厳密には関係演算子ではありません。

extension RESTRICT演算子をprojection内の関係のPRODUCTに適用した結果の補足。

extensionは、問合わせの宣言方法によっては、左テーブルまたは右テーブル(あるいはその両方)から除外された組のいずれかを参照することができます。

これらはそれぞれ、左部結合、右部結合、および完全外部結合です。