DBMS - Joins 连接

我们了解采用两个关系的笛卡尔积的好处,它为我们提供了所有可能配对在一起的元组。 但在某些情况下,我们可能无法采用笛卡尔积,因为我们会遇到具有大量属性的数千个元组的巨大关系。

Join 是笛卡尔积和选择过程的组合。 当且仅当满足给定的连接条件时,连接操作对来自不同关系的两个元组进行配对。

我们将在以下部分简要介绍各种联接类型。


Theta (θ) 连接

Theta join 组合来自不同关系的元组,前提是它们满足 theta 条件。 连接条件用符号 θ 表示。

符号

R1 ⋈θ R2

R1 和 R2 是具有属性 (A1, A2, .., An) 和 (B1, B2,.. , Bn) 的关系,因此这些属性没有任何共同点,即 R1 ∩ R2 = Φ。

Theta 连接可以使用各种比较运算符。

Student
SID Name Std
101 Alex 10
102 Maria 11
Subjects
Class Subject
10 Math
10 English
11 Music
11 Sports

Student_Detail −

STUDENT ⋈Student.Std = Subject.Class SUBJECT

Student_detail
SID Name Std Class Subject
101 Alex 10 10 Math
101 Alex 10 10 English
102 Maria 11 11 Music
102 Maria 11 11 Sports

Equijoin 等值连接

当 Theta join 仅使用 equality 比较运算符时,称为等值连接。 上面的例子对应equijoin。


Natural 自然连接 (⋈)

自然连接不使用任何比较运算符。 它不会像笛卡尔积那样连接。 只有当两个关系之间至少存在一个共同属性时,我们才能执行自然连接。 此外,属性必须具有相同的名称和域。

自然连接作用于两个关系中属性值相同的匹配属性。

Courses
CID Course Dept
CS01 Database CS
ME01 Mechanics ME
EE01 Electronics EE
HoD
Dept Head
CS Alex
ME Maya
EE Mira
Courses ⋈ HoD
Dept CID Course Head
CS CS01 Database Alex
ME ME01 Mechanics Maya
EE EE01 Electronics Mira

外连接

Theta Join、Equijoin 和 Natural Join 称为内连接。 内连接只包括那些具有匹配属性的元组,其余的在结果关系中被丢弃。 因此,我们需要使用外连接将参与关系中的所有元组包含在结果关系中。 外连接有 3 种 − 左外连接、右外连接和全外连接。


左外连接(R Left Outer Join S)

Left 关系 R 中的所有元组都包含在结果关系中。 如果 R 中有元组,而右关系 S 中没有任何匹配的元组,则结果关系的 S 属性为 NULL。

Left
A B
100 Database
101 Mechanics
102 Electronics
Right
A B
100 Alex
102 Maya
104 Mira
Courses Left Outer Join HoD
A B C D
100 Database 100 Alex
101 Mechanics --- ---
102 Electronics 102 Maya

右外连接: ( R Right Outer Join S )

右关系 S 中的所有元组都包含在结果关系中。 如果 S 中有元组,而 R 中没有任何匹配的元组,则结果关系的 R 属性为 NULL。

Courses Right Outer Join HoD
A B C D
100 Database 100 Alex
102 Electronics 102 Maya
--- --- 104 Mira

全外连接: ( R Full Outer Join S)

来自两个参与关系的所有元组都包含在结果关系中。 如果两个关系都没有匹配的元组,则将它们各自的不匹配属性设为 NULL。

Courses Full Outer Join HoD
A B C D
100 Database 100 Alex
101 Mechanics --- ---
102 Electronics 102 Maya
--- --- 104 Mira