【数据库原理】关系代数篇——除法讲解
陈宇超编辑总结:
除法运算的一般形式示意图
如何计算R÷S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理
解
关系R和关系S拥有共同的属性B、C,R÷S得到的属性值就是关系R包含而关
系S不包含的属性,即A属性
在R关系中A属性的值可以取{a1,a2,a3,a4}
a1值对应的象集为{(b1,c2),(b2,c1),(b2,c3)}
a2值对应的象集为{(b3,c7),(b2,c3)}
a3值对应的象集为{(b4,c6)}
a4值对应的象集为{(b6,c6)}
关系S在B、C上的投影为{(b1,c2),(b2,c1),(b2,c3)}
只有a1值对应的象集包含关系S的投影集,所以只有a1应该包含在A属性中
所以R÷S为
A
a1
【例题一】为了更好的理解除法的实际作用,请看下面的例题
设有教学数据库有3个关系(以下四小问均用除法的思想解决)
学生信息关系student(sno,sname,age,x)
学生选课关系sc(sno,cno,score)
学校课程关系cour(cno,cname)
Student表
snosnameagex
S001
陈晓
16
男
S002
周倩
21
女
S003
华南
19
男
S004
曹匀
21
女
S005
郑威
20
男
Cour表
cnocname
C001
计算机科学
C002
诗歌鉴赏
C003
资本论
SC表
snocnoscore
S001C00188
S001C00295
S001C00399
S002C00197
S002C00384
S003C00269
S005C00277
S005C00398
SQL语言中没有全称量词,具体实现时可以把带有全称量词的谓词转换为等
价的带有存在量词的谓词。
解决这类的除法问题一般采用双嵌套notexists
解决所谓forall的问题。
(1)检索所学课程包含了C002课程的学生学号
解关系代数表达式:∏sno(sc÷∏cno(σcno=’C002’(cour))
Sql语句
从略
(2)求至少选择了C001和C003两门课程的学生学号
解关系代数表达式:∏sno(sc÷∏cno(σcno=’C001’orcno=’C003’(cour))
Sql语句
lectdistinctsnofromscAwherenotexists
(
lect*fromcourBwherecnoin('C002','C003')and
notexists
(
lect*==
)
)
也可以采用自连接
from(lect*fromscwherecno='C001')ass1,
(lect*fromscwherecno='C003')ass2
=
(3)求至少学习了学生S003所学课程的学生学号
解关系代数表达式:∏sno(sc÷∏cno(σsno=’S003’(sc))
lectdistinctsnofromscAwherenotexists
(
lect*fromscBwheresno='S003'andnotexists
(
lect*==
)
)
(4)求选择了全部课程的学生的学号
解此例的等价自然语义是,输出这样的学号,不存在某门课程在他的选课记录
里没有选这门课
关系代数表达式:∏sno(sc÷∏cno(cour))
Sql语句
lectdistinctsnofromscAwherenotexists
(
lectcnofromcourBwherenotexists
(
lect*=
=
)
)
(5)求选择了全部课程的学生的学号和姓名
解关系代数表达式:∏sno,sname((student∞sc)÷∏cno(cour))
Sql语句
lectsno,snamefromstudentAwherenotexists
(
lectcnofromcourBwherenotexists
(
lect*=
=
)
)
以上小问用groupby结合count语句也是可以实现的,也更好理解一
些。
例如
求选择了全部课程的学生学号
SELECTsnoFROM(SELECTCOUNT(*)cnt,Sno
FROMSC
GROUPBYsno)T
WHEREcnt>=(SELECTCOUNT(Cno)
FROMCOURSE)
求至少选择了C002和C003两门课程的学生学号
lectsnofromscwherecnoin('C002','C003')groupby
snohavingCOUNT(cno)=2
但该方法对于一个学生多次选修一门课程的情况无法处理,需要对其
中的SC关系用distinct进行一定预处理,所以groupby+count有
一定的局限性
本文发布于:2022-12-03 11:23:54,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/44085.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |