《关系代数表达式总结-数据库(共5页).doc》由会员分享,可在线阅读,更多相关《关系代数表达式总结-数据库(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上关系代数表达式总结一、并例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。
2、第一步:转换(SCSC)笛卡尔积将垂直的条件展开为水平的条件。SC1 SC2学号Sno课程号Cno成绩Grade学号Sno课程号Cno成绩Grade9500119295001192950011929500128595001192950013889500119295002290950011929500238095001285950011929500128595001285950012859500138895001285950022909500128595002380选修课程号为2和3的学生:1=42=2 5=3(SCSC)最后取出学生的学号:1(1=42=2 5=3(SCSC)方法二:Sno(C
3、no=2(SC)Sno(Cno=3(SC)三、差例3 将学生信息(95001,李勇,男,20,CS)从Student表删除。分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。因此,该删除操作可表示为:Student-95001,李勇,男,20,CS注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。例4 求没有选修课程号为2的课程的学生学号。分析:可以认为是在全部学号中去掉选修课程号为2的课程的学生学号,就得出没有选修课程号为2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应当先投影,再进行差运算。Sno(Stu
4、dent)- Sno(Cno=2(SC)特别注意,本题不能写为:Sno(Cno2(SC)。因为,选择运算为行运算,并且SC表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在SC中找不到。根据题意,要查询没有选修课程号为2课程的学生学号,显然包括没选任何课程的学生学号。当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要用差运算表示。四、自然连接例5 检索不学“2”号课程的学生姓名与年龄。分析:首先考虑“差”的问题。先求出全体学生的姓名和年龄,再求出学了”2”号课程的学生的姓名和年龄,最后执行两个集合的差操作。Sname,Sage(Student)- S
5、name,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作用于自然
6、连接后产生的新表上,并用投影操作选取要输出的Sno,Cno。综上,该查询的关系代数表达式为:Sname(Cpno=5(Course)SCSno,Sname(Stuent)或Sname(Sno(Cpno=5(Course)SC)Stuent)五、除1除法定义中的含义分析:(1)前提:两个关系R(X,Y)和S(Y,Z)应该有公共属性列。(2)运算结果为P(X),元组来自于R关系,只包含X属性列(3)R关系中的哪些元组呢? 对于TX的象集包含Y(S)2.除法运算的步骤(1)将被关系R的属性分成两个部分,即与除关系相同的属性部分Y,和与除关系不同的属性部分X。(2)在除关系中,求Y的投影,得到目标数据
7、集。(3)将被除关系进行分组。(分组原则是“值”一样的为一组)(4)考虑被除关系中已分好的每一元组,如果它的象集包含目标数据集(投影结果),则其值为商。例如,R SABCBCDa1b1c2b1c2d1a2b3c7b2c1d1a3b4c6b2c3d2a1b2c3(b)a4b6c6RSa2b2c3Aa1b2c1a1(a) (c)分析:在关系R中,A可以取四个值a1,a2,a3,a4。其中: a1的象集为(b1,c2),(b2,c3),(b2,c1) a2的象集为(b3,c7),(b2,c3) a3的象集为(b4,c6) a4的象集为(b6,c6)S在(B,C)上的投影为(b1,c2),(b2,c1
8、),(b2,c3) 显然只有a1的象集(B,C)a1包含了S在(B,C)属性组上的投影,所以RS=a1。例,R表示选修课程,S1、S2、S3表示课程情况R S1SnoSnameCnoCnameCnoCname1BaoC1DBC2OS1BaoC2OSS21BaoC3DSCnoCname1BaoC4MISC2OS2GuC1DBC4MIS2GuC2OSS33AnC2OSCnoCname4LiC2OSC1DB4LiC4MISC2OSC4MISRS1 RS2SnoSnameSnoSname1Bao1Bao2Gu4Li3AnRS34LiSnoSname1Bao3.除法的物理意义(1)除法的含义:RS1表示
9、至少选修S1关系中列出课程的学生的学号和姓名;RS2表示至少选修S2关系中列出课程的学生的学号和姓名;(2)求选修所有课的同学姓名:(S、SC、C)说明:针对“全部”特征含义的查询要求,如“全部”、“至少”、“包含”等字眼,一般要用除法运算。4.有时需要构造被除数与除数除操作是同时从行和列角度进行运算(S是R的子集),构造被除数与除数。用除法的第一种情况例7 检索至少选修课程号为1和2的学生学号。分析:(1)至少选修课程号为1和2的关系(表)。(2)考虑用除法来做(3)构造一个临时表K=Cno(Cno=1 Cno=2(Course)(4)构造被除数与除数Sno,Cno(SC)K用除法的第二种情
10、况例8 查询选修了全部课程的学生的学号。1) 确定目标属性:学号Sno;2) 确定目标条件:如果学号x被查询到,说明在临时关系Sno,Cno(SC)表中学号x的像集就是所有课程号Cno组成的集合;3) 确定目标关系:根据1)、2)的分析,可以确定该查询是在sno,cno(SC)和Course两个关系上进行除法运算。其中,关系SC提供选修信息,而Course提供全部的课程号信息。4) 画查询树:图3 例题2 的查询树5) 写出关系代数表达式:sno,cno(SC)cno(Course)。例9 查询选修全部课程的学生号码和姓名。(结果需同时满足多个关系的时候用除法)。Sno,Cno(SC)Cno(
11、Course)Sno,Sname(Student)六、综合实例1、设有如下所示的关系:学生表S(S#,SNAME,AGE,SEX)、课程表C(C#,CNAME,TEACHER)和学生选课表SC(S#,C#,GRADE),其中:S#为学号,SNAME为姓名,AGE为年龄,SEX为性别,C#为课程号,CNAME为课程名,GRADE为成绩, TEACHER为教师。SS#SNAMEAGESEX1李强23男2刘丽22女3张友22男CC#CNAMETEACHERK1C语言王华K5数据库原理程军K8编译原理程军SCS#C#GRADE1K1832K1853K1922K5903K5843K880试用关系代数表达
12、式表示下列查询语句:(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。 (3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)。 (4)检索“李强”同学不学课程的课程号(C#)。 (5)检索至少选修两门课程的学生学号(S#)。 (6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。 (8)检索选修课程号为K1和K5的学生学号(S#)。 (9)检索选修全部课程的学生姓名(SNAME)。 (10)检索选修课程包含学号为
13、2的学生所修课程的学生学号(S#)。 (11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。 解:本题各个查询语句对应的关系代数表达式表示如下:(1)C#,CNAME(TEACHER=程军(C) (2)S#,SNAME(AGE21SEX=男(S) (3)SNAME(Swv (S#,C#(SC)C#(TEACHER=程军(C) (4)C#(C)-C#(SNAME=李强(S) wv SC) (5)S#(1=425(SC SC)(6)C#,CNAME(Cwv (S#,C#(SC)S#(S) (7)S#(SCwv C#(TEACHER=程军(C) (8)S#,C#(SC)C#(C#
14、=k1 C#=k5(C) (9)SNAME(Swv (S#,C#(SC)C#(C)) (10)S#,C#(SC)C#(S#=2(SC)(11)S#,SNAME(Swv (S#(SCwv CNAME=C语言(C)2、设有如下所示的关系:学生表S(S#,SNAME,AGE,SEX)、课程表C(C#,CNAME,TEACHER)和学生选课表SC(S#,C#,GRADE),其中:S#为学号,SNAME为姓名,AGE为年龄,SEX为性别,C#为课程号,CNAME为课程名,GRADE为成绩, TEACHER为教师。SS#SNAMEAGESEXS1李强23男S2刘丽22女S3张友22男CC#CNAMETEA
15、CHERK1C语言王华K5数据库原理程军K8编译原理程军SCS#C#GRADES1K183S2K185S3K192S2K590S3K584S3K880试用关系代数表达式表示下列查询语句:(1)检索LIU老师所授课程的课程号和课程名;(2)检索年龄大于23岁的男学生的学号和姓名;(3)检索学号为S3学生所学课程的课程名与任课教师名;(4)检索至少选修LIU老师所授课程中一门课的女学生姓名;(5)检索WANG同学不学的课程的课程号;(6)检索既选修了LIU老师的课程、又选修了LI老师课程的学生学号;(7)全部学生都选修的课程的课程号与课程名;(8)检索选修课程包含LIU老师所授全部课程的学生学号。解:本题各个查询语句对应的关系代数表达式表示如下:(1)C#,CNAME(TEACHER=LIU(C) (2)S#,SNAME(AGE23SEX=男(S)(3)CNAME,TEACHER(S#=S3(SCwv C)(4)SNAME(SEX=女TEACHER=LIU(Swv SCwv C)(5)C#(C)-C#(SNAME=WANG(Swv SC)(6)1(1=425(SCSC)(7)C#,CNAME(Cwv (S#,C#(SC)S#(S) (8)S#,C#(SC)C#(TEACHER=LIU(C) 专心-专注-专业