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