📜  DBMS-加入

📅  最后修改于: 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左外连接 S)

左关系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 Left Outer Join HoD
A B C D
100 Database 100 Alex
101 Mechanics
102 Electronics 102 Maya

右外连接:(R右外连接 )

右关系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完全外部加入 S)

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

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