正如老师在操作系统里引用的话,我不妨拿来套用一下---复习数据库有种不知道自己姓啥的感觉,尤其在面对战老师这华丽丽的四连招时,真是快招架不住,不过老师的必杀却能帮助我们更好的理解和区分元组演算和关系代数。于是记下来准备接招......
已知:学生关系:Student(S#, Sname, Sage, Ssex, Sclass)
已知:学生关系:Student(S#, Sname, Sage, Ssex, Sclass)
课程关系:Course(C#, Cname, Chours, Credit, Tname)
选课关系:SC(S#, C#, Score)
求学过李明老师讲授所有课程的学生姓名(全都学过)

(关系代数那个式子,是除法的典型用法---求全部怎么样。先把整体的数据表通过自然连接组在一起,然后用李明老师去匹配,最后投影为名字。元组演算那个式子是选择student表中的名字,满足如下条件:对于任意在course表中教师是李明的元组,都存在SC表中学号对应学生表的学号,课程号对应课程表的课程号。)
求没学过李明老师讲授任一门课程的学生姓名(全没学过)
(上面的:先求出学过李明老师课的学生,然后从学生表中减去即可。
下面的:意思和第一个差不多,就是对于任意的李明老师的元组都不存在.......)
求至少学过一门李明老师讲授课程的学生姓名(至少学过一门)
(上面的:只要是tname=李明的就行
下面的:把任意的改成存在。)
求至少有一门李明老师讲授课程没有学过的学生姓名(至少有一门没学过)

(上面的:至少有一门没学过就是去掉全学过的。之前有全学过的表示。减去即可
下面的:存在李明老师教的课没有对应的学生即该学生没选。)
个人觉得数据库真心锻炼人的思维,不过对于在下这种木鱼似的脑袋,真是不敲都头疼啊...........(往后复习才发现还有更大的杀招......被秒杀了
)

(关系代数那个式子,是除法的典型用法---求全部怎么样。先把整体的数据表通过自然连接组在一起,然后用李明老师去匹配,最后投影为名字。元组演算那个式子是选择student表中的名字,满足如下条件:对于任意在course表中教师是李明的元组,都存在SC表中学号对应学生表的学号,课程号对应课程表的课程号。)
求没学过李明老师讲授任一门课程的学生姓名(全没学过)

(上面的:先求出学过李明老师课的学生,然后从学生表中减去即可。
下面的:意思和第一个差不多,就是对于任意的李明老师的元组都不存在.......)
求至少学过一门李明老师讲授课程的学生姓名(至少学过一门)

(上面的:只要是tname=李明的就行
下面的:把任意的改成存在。)
求至少有一门李明老师讲授课程没有学过的学生姓名(至少有一门没学过)

(上面的:至少有一门没学过就是去掉全学过的。之前有全学过的表示。减去即可
下面的:存在李明老师教的课没有对应的学生即该学生没选。)
个人觉得数据库真心锻炼人的思维,不过对于在下这种木鱼似的脑袋,真是不敲都头疼啊...........(往后复习才发现还有更大的杀招......被秒杀了