回到首页 / 上级目录

关系运算的连接操作

连接(join):从两个关系的笛卡儿积中选取属性间满足一定条件的元组。

用 $\mathop{R\bowtie S}\limits_{A\theta B}$ 表示,其中 A 和 B 分别为 R 和 S 上列数相等且可比的属性组,$\theta$ 为比较运算符。

假设关系 R 如下:

A B C
a1 b1 5
a2 b2 6

关系 S 如下:

B E
b1 2
b1 7
b3 4

非等值连接

则非等值连接 $\mathop{R\bowtie S}\limits_{C < E}$ 的结果为:

A R.B C S.B E
a1 b1 5 b1 7
a2 b2 6 b1 7

等值连接

等值连接 $\mathop{R\bowtie S}\limits_{R.B= S.B}$ 的结果为:

A R.B C S.B E
a1 b1 5 b1 2
a1 b1 5 b1 7

自然连接是一种特殊的连接。它要求两个关系中进行比较的份量必须是同名的属性组,并且在结果中把重复的属性列去掉。上述等值连接对应的自然连接如下:

A B C E
a1 b1 5 2
a1 b1 5 7

悬浮元组

在等值连接操作中,R 和 S 中某些元组被舍弃了,这些被舍弃的元组称为悬浮元组(dangling tuple)。

如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接(outer join)。

A B C E
a1 b1 5 2
a1 b1 5 7
a2 b2 6 NULL
NULL b3 NULL 4

如果只保留左边关系 R 中的悬浮元组就叫做左外连接(left join)。

A B C E
a1 b1 5 2
a1 b1 5 7
a2 b2 6 NULL

如果只保留右边关系 S 中的悬浮元组就叫做右外连接(right join)。

A B C E
a1 b1 5 2
a1 b1 5 7
NULL b3 NULL 4