- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关系代数表达式总结-数据库
关系代数表达式总结
一、并
例1 求选修了课程号为1或2的课程的学生学号。
分析:可以先求出选修了课程号为1的课程的学生学号,再求出选修了课程号为2的课程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号。本例也可以使用或条件来表示。
πSno(σCno=’1’(SC))∪πSno(σCno=’2’(SC)) 或πSno(σCno=’1’∨ Cno=’2’(SC))
二、交
例2 检索至少选修课程号为2和3的课程的学生学号。
分析:
方法一:只涉及到一个表,但不能直接用∧(为什么?)
特别注意,本例不能写为:
πSno(σCno=’2’∧ Cno=’3’(SC))
因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。
第一步:转换(SC×SC)
笛卡尔积将垂直的条件展开为水平的条件。
SC1 SC2
学号
Sno 课程号
Cno 成绩
Grade 学号
Sno 课程号
Cno 成绩
Grade 95001 1 92 95001 1 92 95001 1 92 95001 2 85 95001 1 92 95001 3 88 95001 1 92 95002 2 90 95001 1 92 95002 3 80 95001 2 85 95001 1 92 95001 2 85 95001 2 85 95001 2 85 95001 3 88 95001 2 85 95002 2 90 95001 2 85 95002 3 80 … … … … … … 选修课程号为2和3的学生:
σ1=4∧2=’2’∧ 5=’3’(SC×SC)
最后取出学生的学号:
π1(σ1=4∧2=’2’∧ 5=’3’(SC×SC))
方法二:πSno(σCno=’2’(SC))∩πSno(σCno=’3’(SC))
三、差
例3 将学生信息(‘95001’,’李勇’,‘男’,20,‘CS’)从Student表删除。
分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。
因此,该删除操作可表示为:
Student-{‘95001’,’李勇’,‘男’,20,‘CS’}
注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。
例4 求没有选修课程号为2的课程的学生学号。
分析:可以认为是在全部学号中去掉选修课程号为2的课程的学生学号,就得出没有选修课程号为2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应当先投影,再进行差运算。
πSno(Student)- πSno(σCno=’2’(SC))
特别注意,本题不能写为:πSno(σCno≠’2’(SC))。因为,选择运算为行运算,并且SC表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在SC中找不到。根据题意,要查询没有选修课程号为‘2’课程的学生学号,显然包括没选任何课程的学生学号。
当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要用差运算表示。
四、自然连接
例5 检索不学“2”号课程的学生姓名与年龄。
分析:首先考虑“差”的问题。先求出全体学生的姓名和年龄,再求出学了”2”号课程的学生的姓名和年龄,最后执行两个集合的差操作。
πSname,Sage(Student)- πSname,Sage(σCno=’2’(StudentSC))
例6 查询至少选修了一门其直接先行课为“5”号课程的学生姓名。
分析:(1)根据题目确定要输出的列为:Sname,都在Student表中;
(2)根据题意,先行课程名为“5”,则选择的条件为Cpno=’5’,因为Cpno在Course表中,所以也要用到Course表;
(3)根据1,2两步确定用到的表名集为{Student,Course};
(4)因为表名集中两个表,则要用自然连接将它们连接起来,但因为这个两表不存在共同的列,不能进行自然连接。因此要加入中间表,中间表中应含有能与其它两个表进行自然连接的公共列,这个表就是SC。将选择条件Cpno=‘5’作用于自然连接后产生的新表上,并用投影操作选取要输出的Sno,Cno。
综上,该查询的关系代数表达式为:
πSname(σCpno=’5’(Course)SCπSno,Sname(Stuent))
或
πSname(πSno(σCpno=’5’(Course)SC)Stuent))
五、除
1.除法定义中的含义
分析:(1)前提:两个关系R(X,Y)和S(Y,Z)应该有公共属性列。
(2)运算结果为P(X),元组来自于R关系,只包含X属性列
(3)R关系中的哪些元组呢?
对
文档评论(0)