DBMS の関係代数: 例を使用した操作

関係代数

関係代数 広く使用されている手続き型クエリ言語です。 関係のインスタンスを入力として収集し、関係の発生を出力として提供します。 このアクションを実行するには、さまざまな操作が使用されます。 SQL リレーショナル代数クエリ操作は、リレーションに対して再帰的に実行されます。 これらの操作の出力は新しいリレーションであり、XNUMX つ以上の入力リレーションから形成される場合があります。

基本的な SQL リレーショナル代数演算

関係代数はさまざまなグループに分かれています

単項リレーショナル演算

  • SELECT(記号:σ)
  • プロジェクト(記号:π)
  • RENAME(記号:ρ)

集合論からの関係代数演算

  • ユニオン (υ)
  • 交差点 ( )、
  • 違い (-)
  • デカルト積 ( x )

バイナリ リレーショナル演算

  • 登録
  • 事業部

解決策を使って詳しく調べてみましょう。

セレクト(σ)

SELECT 操作は、指定された選択条件に従ってタプルのサブセットを選択するために使用されます。 シグマ(σ)シンボルで表します。 選択条件を満たすタプルを選択する式として使用されます。 Select 演算子は、指定された述語を満たすタプルを選択します。

σp(r)

σ 述語です

r リレーションを表し、テーブルの名前です

p 前置詞論理です

σ topic = "Database" (Tutorials)

出力 – トピック = 'データベース' のチュートリアルからタプルを選択します。

σ topic = "Database" and author = "guru99"( Tutorials)

出力 – トピックが「データベース」で「作成者」が guru99 であるチュートリアルからタプルを選択します。

σ sales > 50000 (Customers)

出力 – 売上が50000を超える顧客からタプルを選択します

投影(π)

射影では、射影リストに記載されている属性を除く入力リレーションのすべての属性が削除されます。 投影法は、Relation の垂直サブセットを含むリレーションを定義します。

これは、指定された属性の値を抽出して重複する値を排除するのに役立ちます。 (pi) 記号は、リレーションから属性を選択するために使用されます。 この演算子は、特定の列をリレーションから除外し、他の列を破棄するのに役立ちます。

投影の例:

以下を検討してくださいwing テーブル

顧客ID 顧客名 Status:
1 でログイン アクティブ
2 Amazon アクティブ
3 Appleは 非アクティブ
4 アリババ アクティブ

ここで、CustomerName と status の投影は次のようになります。

Π CustomerName, Status (Customers)
顧客名 Status:
でログイン アクティブ
Amazon アクティブ
Appleは 非アクティブ
アリババ アクティブ

名前の変更(ρ)

名前変更は、リレーションの属性の名前を変更するために使用される単項操作です。

ρ (a/b)R は、リレーションの属性 'b' の名前を 'a' に変更します。

和合演算 (υ)

UNIONは∪記号で表されます。 これには、テーブル A または B にあるすべてのタプルが含まれます。また、重複したタプルも削除されます。 したがって、セット A UNION セット B は次のように表現されます。

結果 <- A ∪ B

ユニオン演算を有効にするには、次のようにします。wing 条件が成立する必要があります –

  • R と S は同じ数の属性でなければなりません。
  • 属性ドメインには互換性がある必要があります。
  • 重複したタプルは自動的に削除される必要があります。

以下を検討してくださいwing テーブル。

表A
表B
列1 列2 列1 列2
1 1 1 1
1 2 1 3

A ∪ B は、

表A∪B
列1 列2
1 1
1 2
1 3

セット差(-)

– 記号はそれを示します。 A – B の結果は、A にはあるが B には含まれていないすべてのタプルを含むリレーションになります。

  • A の属性名は B の属性名と一致する必要があります。
  • XNUMX つのオペランドの関係 A と B は、互換性があるか、ユニオン互換性がある必要があります。
  • これは、リレーション A にはあるが B には含まれていないタプルで構成されるリレーションを定義する必要があります。

A-B
表A – B
列1 列2
1 2

インターセクション

交差は記号 ∩ で定義されます。

A∩B

A と B の両方にあるすべてのタプルのセットで構成されるリレーションを定義します。ただし、A と B は共用体互換である必要があります。

インターセクション
交差点の視覚的定義

例:

A ∩ B
表A∩B
列1 列2
1 1

DBMS のデカルト積(X)

DBMS のデカルト積 XNUMX つのリレーションの列をマージするために使用される操作です。 一般に、デカルト積は、単独で実行すると意味のある演算にはなりません。 ただし、その後に他の操作が続く場合に意味を持ちます。 クロス積またはクロス結合とも呼ばれます。

例 – デカルト積

σ 列2 = '1' (AXB)

出力 – 上記の例では、列 2 の値が 1 であるリレーション A および B のすべての行が表示されます。

σ 列 2 = '1' (AXB)
列1 列2
1 1
1 1

結合操作

結合操作は基本的に、選択基準が後に続くデカルト積です。

⋈ で示される結合操作。

JOIN 操作では、さまざまなリレーションからさまざまに関連するタプルを結合することもできます。

結合の種類:

結合操作のさまざまな形式は次のとおりです。

内部結合:

  • シータ参加
  • EQUI結合
  • 自然結合

外部結合:

  • 左外部結合
  • 右外部結合
  • 完全外部結合

内部結合

内部結合では、一致基準を満たすタプルのみが含まれ、残りは除外されます。 さまざまなタイプの内部結合を調べてみましょう。

シータ結合

JOIN 操作の一般的なケースは、シータ結合と呼ばれます。 記号で表されます θ

A ⋈θ B

シータ結合では、選択基準に任意の条件を使用できます。

例:

A ⋈ A.column 2 >  B.column 2 (B)
A ⋈ A.列 2 > B.列 2 (B)
列1 列2
1 2

EQUI結合

シータ結合が等価条件のみを使用する場合、等価結合になります。

例:

A ⋈ A.column 2 =  B.column 2 (B)
A ⋈ A.列 2 = B.列 2 (B)
列1 列2
1 1

EQUI 結合は、RDBMS で SQL を使用して効率的に実装するのが最も難しい操作ですが、その理由の XNUMX つは、 RDBMS 本質的なパフォーマンス上の問題を抱えています。

自然結合 (⋈)

自然結合は、リレーション間に共通の属性 (列) がある場合にのみ実行できます。 属性の名前とタイプは同じである必要があります。

以下を検討してくださいwing XNUMXつのテーブル

C
正方形である
2 4
3 9
D
キューブ
2 8
3 27
C ⋈ D
C⋈D
正方形である キューブ
2 4 8
3 9 27

外部結合

外部結合には、一致基準を満たすタプルに加えて、基準に一致しない一部またはすべてのタプルも含まれます。

左外部結合(A ⟕ B)

左外部結合では、操作によりすべてのタプルを左のリレーションに維持できます。 ただし、右リレーションで一致するタプルが見つからない場合、結合結果の右リレーションの属性には null 値が埋められます。

左外部結合

以下を検討してくださいwing 2テーブル

A
正方形である
2 4
3 9
4 16
B
キューブ
2 8
3 18
5 75
A Left Outer Join B
A ⋈ B
正方形である キューブ
2 4 8
3 9 18
4 16

右外部結合 ( A ⟖ B )

右外部結合では、操作によりすべてのタプルを正しい関係に保つことができます。 ただし、左側のリレーションで一致するタプルが見つからない場合、結合結果の左側のリレーションの属性には null 値が埋められます。

右外部結合

A Right Outer Join B
A ⋈ B
キューブ 正方形である
2 8 4
3 18 9
5 75

完全外部結合 ( A ⟗ B)

完全外部結合では、一致条件に関係なく、両方のリレーションのすべてのタプルが結果に含まれます。

A Full Outer Join B
A ⋈ B
キューブ 正方形である
2 4 8
3 9 18
4 16
5 75

まとめ

演算(記号) 目的
選択(σ) SELECT 操作は、指定された選択条件に従ってタプルのサブセットを選択するために使用されます。
投影(π) 射影では、射影リストに記載されている属性を除く入力リレーションのすべての属性が削除されます。
ユニオンオペレーション(∪) UNIONはシンボルに象徴されます。 これには、テーブル A または B にあるすべてのタプルが含まれます。
セット差(-) – 記号はそれを示します。 A – B の結果は、A にはあるが B には含まれていないすべてのタプルを含むリレーションになります。
交差点(∩) Intersection は、A と B の両方にあるすべてのタプルのセットで構成されるリレーションを定義します。
デカルト積(X) デカルト演算は、XNUMX つのリレーションの列をマージするのに役立ちます。
内部結合 内部結合には、一致基準を満たすタプルのみが含まれます。
シータ結合(θ) JOIN 操作の一般的なケースは、シータ結合と呼ばれます。 それを記号θで表す。
EQUI結合 シータ結合が等価条件のみを使用する場合、等価結合になります。
自然結合(⋈) 自然結合は、リレーション間に共通の属性 (列) がある場合にのみ実行できます。
アウタージョイン 外部結合内で、一致基準を満たすタプルとともに。
左外部結合(左外部結合) 左外部結合では、操作によりすべてのタプルを左のリレーションに維持できます。
右外部結合(右外部結合) 右外部結合では、操作によりすべてのタプルを正しい関係に保つことができます。
完全外部結合(完全外部結合) 完全外部結合では、一致条件に関係なく、両方のリレーションのすべてのタプルが結果に含まれます。