设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。除运算的含义–给定关系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除以T时:(不区分大小写)
1..先找出R表中和T表相同的属性,这里是B和C。
2.也就是说R表中的其他属性A可以取值为{a,b,c}
3.其中, a的象集为{(b,c),(d,e)},b的象集为{(b,c),(d,e)},c的象集为{(a,b)}
4.而T在B和C上的投影为S{(b,c),(d,e)},这时候,我们在步骤三中找一个象集是包含S集合的,即a,b的象集包含了T在B,C
属性组上的投影,所以R÷T={a,b}。
R的属性是(A,B,C,D),S的属性是(C,D)因此,R÷S的属性是(A,B),注:R÷S的属性由属于R但不属于S的属性组成
(R÷S)×S得到的元组必须是R中的元组。
S的第一个元组是(c,d),可以在R中寻找C属性为c,D属性为d的元组,结果可以发现有以下两组:
a b c d
e d c d
对应的A、B属性为以下两组
a b
e d
S的第二个元组是(e,f),可以检验R中有没有元组a b e f 和e d e f,如果没有前者将a b去掉,没有后者前e d去掉,本题2者均有,因此结果R÷S为
A B
a b
e d
有关系: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&IcircR∧πY (S) íYx }
Yx:x在R中的象集,x = tr[X]
除 *** 作是同时从行和列角度进行运算
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)