関係代数と関係論理は、関係を操作するために使用する2つの異なる、しかし同等の形式言語です。代数が手続き型であり、問合わせの最適化ルーチンとデータベース マネージャが操作できる、問合わせの内部表記用であるのに対して、論理は非手続き型であって、ユーザーによって適用可能な問合わせ言語の基礎となります。
基本的な問合わせSELECT FROM WHERE (問合わせ用に一般化された非手続き型関係論理のSQL表現形式)は、関係代数の形式で記述し直すことができます。そうするには、以下のようにします。
projection ( restriction ( product ) )
- projection
- 1つ以上の関係から1つ以上の属性を抽出するPROJECT演算子を適用した結果。
- restriction
- projectionから1つまたは複数の組を抽出するRESTRICT(またはSELECT)演算子を適用した結果。
- product
- 指定した各々の関係から、組の可能性のある組合わせすべてを作成するPRODUCT演算子を適用した結果。
表現を明確にするには、元の式をprojection (内部結合)として再度記述します。
外部結合の関係代数
外部結合は残りの組を指定した内部結合の結果を、内部結合の結果テーブルの組と共通点のない結合関係のいずれか(または両方)にマージします。
外部結合はリレーショナル代数で以下のように表現できます。
projection ( inner_join UNION ALL extension )
- projection
- 1つ以上の関係から1つ以上の属性を抽出するPROJECT演算子を適用した結果。
- inner_join
- RESTRICT(またはSELECT)演算子をprojection内の関係のPRODUCTに適用した結果。
- extension
- RESTRICT演算子をprojection内の関係のPRODUCTに適用した結果の補足。
UNION ALLは重複行を許可するため。これは厳密には関係演算子ではありません。