📅  最后修改于: 2021-01-11 06:19:01             🧑  作者: Mango
我们了解采用两个关系的笛卡尔积的好处,这使我们可以将所有可能的元组配对在一起。但是,在某些情况下,采用笛卡尔积可能是不可行的,因为我们遇到了与具有大量属性的数千个元组有巨大关系的情况。
连接是笛卡尔积与选择过程的组合。当且仅当满足给定的连接条件时,Join操作才将来自不同关系的两个元组配对。
在以下各节中,我们将简要描述各种连接类型。
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 |
当theta连接的用途只有平等比较运算符,它被认为是等值连接。上面的示例对应于Equijoin。
自然连接不使用任何运算符。它没有连接笛卡尔积的方式。仅当两个关系之间至少存在一个公共属性时,我们才能执行自然联接。此外,属性必须具有相同的名称和域。
自然联接作用于两个关系中的属性值相同的匹配属性。
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联接,等联接和自然联接称为内部联接。内部联接仅包含具有匹配属性的那些元组,其余的将在结果关系中丢弃。因此,我们需要使用外部联接将参与关系中的所有元组包括在结果关系中。共有三种外部联接-左外部联接,右外部联接和完全外部联接。
左关系R中的所有元组都包含在结果关系中。如果R中的元组在Right关系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 |
右关系S中的所有元组都包含在结果关系中。如果S中有元组,而R中没有任何匹配的元组,则结果关系的R属性为NULL。
Courses HoD | |||
---|---|---|---|
A | B | C | D |
100 | Database | 100 | Alex |
102 | Electronics | 102 | Maya |
— | — | 104 | Mira |
来自两个参与关系的所有元组都包括在结果关系中。如果两个关系都没有匹配的元组,则将它们各自的不匹配属性设为NULL。
Courses HoD | |||
---|---|---|---|
A | B | C | D |
100 | Database | 100 | Alex |
101 | Mechanics | — | — |
102 | Electronics | 102 | Maya |
— | — | 104 | Mira |