|
扩展的关系代数运算可以从基本的关系运算中导出,主要包括以下几种。
|
|
|
|
关系R与S具有相同的关系模式。关系R和S的交由属于R同时又属于S的元组构成的集合组成。关系R和S的交记作
|
|
|
|
显然,R∩S=R-(R-S)或者R∩S=S-(S-R)。
|
|
|
|
连接(Join)分为连接、等值连接和自然连接3种。连接运算是从两个关系的笛卡儿积中选取满足条件的元组。
|
|
|
(1)θ连接。从关系R和S的笛卡儿积中选取属性间满足一定条件的元组。记作
|
|
|
|
(2)等值连接。当θ为"="时称为等值连接。可以表示为
|
|
|
|
(3)自然连接。是一种比较特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中把重复属性列去掉。
|
|
|
|
除(Division)运算是同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组。R÷S应当满足元组在X上的分量值x的象集Yx包含关系S在属性组Y上投影的集合。其形式定义为
|
|
|
R÷S={tn[X]|tn∈R∧πy(S)?Yx}
|
|
|
式中,Yx为x在R中的象集,x=tn[X],且R÷S的结果集的属性组为X。
|
|
|
|
广义投影(Generalized Projection)运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。
|
|
|
若有关系R,条件F1,F2,…,Fn中的每一个都是涉及R中常量和属性的算术表达式,那么广义投影运算的形式定义为
|
|
|
|
|
外连接(Outer Join)运算是连接运算的扩展,可以处理缺失的信息。外连接运算有3种,即左外连接、右外连接和全外连接。
|
|
|
(1)左外连接。取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值NULL来填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
|
|
|
(2)右外连接。取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值NULL来填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。
|
|
|
(3)全外连接。完成左外连接和右外连接的操作。即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。
|
|
|