DBMS における関係代数: Opera例による説明
関係代数
関係代数 広く使用されている手続き型クエリ言語です。関係のインスタンスを入力として収集し、関係の発生を出力として返します。このアクションを実行するために、さまざまな操作が使用されます。SQL リレーショナル代数クエリ操作は、関係に対して再帰的に実行されます。これらの操作の出力は、1 つ以上の入力関係から形成される可能性のある新しい関係です。
基本的な SQL 関係代数 Operaン
関係代数はさまざまなグループに分かれています
単項リレーショナル Operaン
- SELECT(記号:σ)
- プロジェクト(記号:π)
- RENAME(記号:ρ)
関係代数 Opera集合論からの変換
- ユニオン (υ)
- 交差点 ( )、
- 違い (-)
- デカルト積 ( x )
バイナリリレーショナル Operaン
- 登録
- 事業部
解決策を使って詳しく調べてみましょう。
セレクト(σ)
SELECT 操作は、指定された選択条件に従ってタプルのサブセットを選択するために使用されます。シグマ (σ) シンボルがそれを表します。選択条件を満たすタプルを選択する式として使用されます。Select 演算子は、指定された述語を満たすタプルを選択します。
σp(r)
σ
述語です
r
リレーションを表し、テーブルの名前です
p
前置詞論理です
例
σ topic = "Database" (Tutorials)
出力 – トピック = 'データベース' のチュートリアルからタプルを選択します。
例
σ topic = "Database" and author = "guru99"( Tutorials)
出力 – トピックが「データベース」で「作成者」が guru99 であるチュートリアルからタプルを選択します。
例
σ sales > 50000 (Customers)
出力 – 売上が50000を超える顧客からタプルを選択します
投影(π)
射影では、射影リストに記載されている属性を除く入力リレーションのすべての属性が削除されます。 投影法は、Relation の垂直サブセットを含むリレーションを定義します。
これは、指定された属性の値を抽出して重複値を排除するのに役立ちます。 (pi) 記号は、リレーションから属性を選択するために使用されます。この演算子は、リレーションから特定の列を保持し、他の列を破棄するのに役立ちます。
投影の例:
次の表を見てください
顧客ID | 顧客名 | ステータス |
---|---|---|
1 | グーグル | 従軍中 |
2 | Amazon | 従軍中 |
3 | Apple | 非アクティブ |
4 | アリババ | 従軍中 |
ここで、CustomerName と status の投影は次のようになります。
Π CustomerName, Status (Customers)
顧客名 | ステータス |
---|---|
グーグル | 従軍中 |
Amazon | 従軍中 |
Apple | 非アクティブ |
アリババ | 従軍中 |
名前の変更(ρ)
名前変更は、リレーションの属性の名前を変更するために使用される単項演算です。
ρ (a/b)R は、リレーションの属性 'b' の名前を 'a' に変更します。
結合演算(υ)
UNIONは∪記号で表されます。 これには、テーブル A または B にあるすべてのタプルが含まれます。また、重複したタプルも削除されます。 したがって、セット A UNION セット B は次のように表現されます。
結果 <- A ∪ B
結合演算が有効であるためには、以下の条件が満たされていなければなりません。
- R と S は同じ数の属性でなければなりません。
- 属性ドメインには互換性がある必要があります。
- 重複したタプルは自動的に削除される必要があります。
例
次の表を検討してください。
列1 | 列2 | 列1 | 列2 | |
---|---|---|---|---|
1 | 1 | 1 | 1 | |
1 | 2 | 1 | 3 |
A ∪ B は、
列1 | 列2 |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
セット差(-)
– 記号はそれを示します。 A – B の結果は、A にはあるが B には含まれていないすべてのタプルを含むリレーションになります。
- A の属性名は B の属性名と一致する必要があります。
- 2 つのオペランド関係 A と B は、互換性があるか、または Union 互換性がある必要があります。
- これは、リレーション A にはあるが B には含まれていないタプルで構成されるリレーションを定義する必要があります。
例
A-B
列1 | 列2 |
---|---|
1 | 2 |
インターセクション
交差は記号 ∩ で定義されます。
A∩B
A と B の両方にあるすべてのタプルのセットで構成されるリレーションを定義します。ただし、A と B は共用体互換である必要があります。
例:
A ∩ B
列1 | 列2 |
---|---|
1 | 1 |
DBMS のデカルト積(X)
DBMS のデカルト積 2 つのリレーションの列を結合するために使用される操作です。通常、直積は単独で実行しても意味のある操作ではありません。ただし、他の操作が続くと意味が出てきます。直積またはクロス結合とも呼ばれます。
例 – デカルト積
σ 列2 = '1' (AXB)
出力 – 上記の例では、列 2 の値が 1 であるリレーション A および B のすべての行が表示されます。
列1 | 列2 |
---|---|
1 | 1 |
1 | 1 |
加入 Operaン
結合操作は、本質的には、選択基準が続く直積です。
結合操作は⋈で示されます。
JOIN 操作では、異なる関係からさまざまな関連タプルを結合することもできます。
結合の種類:
結合操作のさまざまな形式は次のとおりです。
内部結合:
- シータ参加
- EQUI結合
- 自然結合
外部結合:
- 左外部結合
- 右外部結合
- 完全外部結合
内部結合
内部結合では、一致基準を満たすタプルのみが含まれ、残りは除外されます。 さまざまなタイプの内部結合を調べてみましょう。
シータ結合
JOIN操作の一般的なケースはシータ結合と呼ばれ、記号で表されます。 θ
例
A ⋈θ B
シータ結合では、選択基準に任意の条件を使用できます。
具体的な例を挙げますと、以下の通りです。
A ⋈ A.column 2 > B.column 2 (B)
列1 | 列2 |
---|---|
1 | 2 |
EQUI結合
シータ結合が等価条件のみを使用する場合、等価結合になります。
具体的な例を挙げますと、以下の通りです。
A ⋈ A.column 2 = B.column 2 (B)
列1 | 列2 |
---|---|
1 | 1 |
EQUI結合は、RDBMSでSQLを使用して効率的に実装するのが最も難しい操作であり、 RDBMS 本質的なパフォーマンス上の問題を抱えています。
自然結合 (⋈)
自然結合は、リレーション間に共通の属性 (列) がある場合にのみ実行できます。 属性の名前とタイプは同じである必要があります。
例
次の2つの表を考えてみましょう
で | 正方形である |
---|---|
2 | 4 |
3 | 9 |
で | キューブ |
---|---|
2 | 8 |
3 | 27 |
C ⋈ D
で | 正方形である | キューブ |
---|---|---|
2 | 4 | 8 |
3 | 9 | 27 |
外部結合
外部結合には、一致基準を満たすタプルに加えて、基準に一致しない一部またはすべてのタプルも含まれます。
左外部結合(A ⟕ B)
左外部結合では、操作によって左リレーションのすべてのタプルを保持できます。ただし、右リレーションに一致するタプルが見つからない場合、結合結果の右リレーションの属性は null 値で埋められます。
次の2つの表を考えてみましょう
で | 正方形である |
---|---|
2 | 4 |
3 | 9 |
4 | 16 |
で | キューブ |
---|---|
2 | 8 |
3 | 18 |
5 | 75 |
AB
で | 正方形である | キューブ |
---|---|---|
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
右外部結合 ( A ⟖ B )
右外部結合では、操作によってすべてのタプルを右関係に保持できます。ただし、左関係に一致するタプルが見つからない場合、結合結果の左関係の属性は null 値で埋められます。
AB
で | キューブ | 正方形である |
---|---|---|
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | – |
完全外部結合 ( A ⟗ B)
完全外部結合では、一致条件に関係なく、両方のリレーションのすべてのタプルが結果に含まれます。
AB
で | キューブ | 正方形である |
---|---|---|
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
5 | – | 75 |
製品概要
Opera記号(記号) | 目的 |
---|---|
選択(σ) | SELECT操作は、与えられた選択条件に従ってタプルのサブセットを選択するために使用されます。 |
投影(π) | 射影では、射影リストに記載されている属性を除く入力リレーションのすべての属性が削除されます。 |
Union Operaション(∪) | UNIONはシンボルに象徴されます。 これには、テーブル A または B にあるすべてのタプルが含まれます。 |
セット差(-) | – 記号はそれを示します。 A – B の結果は、A にはあるが B には含まれていないすべてのタプルを含むリレーションになります。 |
交差点(∩) | Intersection は、A と B の両方にあるすべてのタプルのセットで構成されるリレーションを定義します。 |
デカルト積(X) | デカルト演算は、2 つのリレーションからの列をマージするのに役立ちます。 |
内部結合 | 内部結合には、一致基準を満たすタプルのみが含まれます。 |
シータ結合(θ) | JOIN 操作の一般的なケースは、シータ結合と呼ばれます。これは記号 θ で表されます。 |
EQUI結合 | シータ結合が等価条件のみを使用する場合、等価結合になります。 |
自然結合(⋈) | 自然結合は、リレーション間に共通の属性 (列) がある場合にのみ実行できます。 |
アウタージョイン | 外部結合内で、一致基準を満たすタプルとともに。 |
左外部結合( |
左外部結合では、操作によってすべてのタプルを左の関係に保持できます。 |
右外部結合( |
右外部結合では、操作によってすべてのタプルを適切な関係に保持できます。 |
完全外部結合( |
完全外部結合では、一致条件に関係なく、両方のリレーションのすべてのタプルが結果に含まれます。 |