如何理解关系中的除法
定义:设关系 R除以关系S的结果为关系T,则T包含所有在R中但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R 中
![](https://img-blog.csdnimg.cn/e0552468b7554fc59323f23f8fb63eb6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHpsXzA0MDg=,size_20,color_FFFFFF,t_70,g_se,x_16)
设有关系R,S以及RS,如图所示,求RS÷S的结果
![](https://img-blog.csdnimg.cn/8ca61601313f46f1ad1d12c865c59c36.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHpsXzA0MDg=,size_20,color_FFFFFF,t_70,g_se,x_16)
很容易求得结果为:{张三 }
所以你很容易看出来RS÷S 在这里解决的问题就是:“得到选修了所有课程的学生”
RS÷S的意义就是:“在R和S的联系RS中,找出与S中所有的元组有关系的R元组”。
R(X,Y)÷S(Y,Z)的运算用结构化语言SQL 语句可表达为下列形式:
select distinct R.X from R as R1
where not exists
(
select S.Y from S
where not exists
(
select* from R as R2
where R2.X = R1.X and R2.Y = S.Y
)
);