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

