除运算的含义–给定关系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}。