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 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 HoD | |||
---|---|---|---|
A | B | C | D |
100 | Database | 100 | Alex |
101 | Mechanics | --- | --- |
102 | Electronics | 102 | Maya |
右外连接: ( R S )
右关系 S 中的所有元组都包含在结果关系中。 如果 S 中有元组,而 R 中没有任何匹配的元组,则结果关系的 R 属性为 NULL。
Courses HoD | |||
---|---|---|---|
A | B | C | D |
100 | Database | 100 | Alex |
102 | Electronics | 102 | Maya |
--- | --- | 104 | Mira |
全外连接: ( R S)
来自两个参与关系的所有元组都包含在结果关系中。 如果两个关系都没有匹配的元组,则将它们各自的不匹配属性设为 NULL。
Courses HoD | |||
---|---|---|---|
A | B | C | D |
100 | Database | 100 | Alex |
101 | Mechanics | --- | --- |
102 | Electronics | 102 | Maya |
--- | --- | 104 | Mira |