数据库关系代数之除运算

除运算的含义–给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合

解释:

有关系:R(x,y) S(y,z)
R S
A B C B C D
a1 b1 c2 b1 c2 d1
a1 b2 c3 b2 c1 d1
a1 b2 c1 b2 c3 d2
......
R÷S的结果为a1
x相当于A y 相当于B,C z相当于D
按照除运算 规则,我们不必关注D
只需比较B,C当S关系中的B,C所有的组合(b1,c2)(b2,c3)(b2,c1)都出现在R关系中时,结果才为A
R÷S = {tr[X] | trÎR∧πY (S) íYx }
Yx:x在R中的 象集,x = tr[X]
除操作是同时从 角度进行运算

举例

R:
A
B
C
a1
b1
c2
a2
b3
c7
a3
b4
c6
a1
b2
c3
a4
b6
c6
a2
b2
c3
a1
b2
c1
S:
B
C
D
b1
c2
d1
b2
c1
d1
b2
c3
d2
R÷S
A
a1
/*
(1) 找S与R的共同属性,其 元组看做整体 k
(2)选择R中包含k的 非S与R相同属性的 属性 即为R÷S
*/
解答如下:
在关系R中,A可以取四个值{a1,a2,a3,a4},其中:
a1的象集为:{( b1, c2),( b2, c3),( b2, c1)}
a2的象集为:{( b3, c7),( b2, c3)}
a3的象集为:{( b4, c6)}
a4的象集为:{( b6, c6)}
S在(B,C)上的投影为{( b1, c2),( b2, c3),( b2, c1)}。
显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,所以R÷S={a1}。

猜你喜欢

转载自blog.csdn.net/qq_36561697/article/details/80815262
今日推荐