环境:MySQL
ID:MySQL WorkBench 6.3 CE
实现以下有点难度的关系除法。
先给定义:
除运算是同时从关系的水平方向和垂直方向进行运算。给定关系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。
sql实现(MySQL环境):不重复地例举出,至少选了学号为101同学所选的全部课程的学生的学号
p:学生101选了课程y
q:学生选了课程y
要求:(∀y)p→q
=(∀y)¬pVq = ¬(∃y)pΛ¬q
select distinct Sno from Score s1 where not exists (select * from Score s2 where s2.Sno = 101 and not exists (select * from Score s3 where s1.Sno = s3.Sno and s2.Cno = s3.Cno))