关系代数表达式总结.doc_第1页
关系代数表达式总结.doc_第2页
关系代数表达式总结.doc_第3页
关系代数表达式总结.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关系代数表达式总结一、并例1求选修了课程号为1或2的课程的学生学号。分析:可以先求出选修了课程号为 1的课程的学生学号, 再求出选修了课程号为 2的课 程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号。 本例也可以使用或条件来表示。n Sno( (T Cno= 1 (SC) u n Snc( (T Cno= 2 (SC)或 n Snc( (T Cnc= 1 V Cnc= 2 (SC) 、一、父例2检索至少选修课程号为2和3的课程的学生学号。分析:方法一:只涉及到一个表,但不能直接用人(为什么?)特别注意,本例不能写为:n Sno( (T Cno= 2A Cno= 3 (

2、SC)因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。第一步:转换(SCX SC笛卡尔积将垂直的条件展开为水平的条件。SC1SC2Sno课程号Cno绩GradeSno课程号Cno成绩Grade950011929500119295001192950012859500119295001388950011929500229095001192950028095001285950011929500128595001285950012859500138895001285950022909500128595002380选修课程号为2和3的学生:T 1=4A 2= 2A 5= 3 (SCX SC)

3、最后取出学生的学号:n 1( T 1=4 A 2= 2A 5= 3 (SCX SC)方法二:n Sno( T Cno= 2 (SC) An Sno( T Cno= 3 (SC)三、差例3将学生信息(95001 ,李勇,男,20, CS )从Student表删除。 分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。因此,该删除操作可表示为:Student- 95001,李勇,男,20, CS 注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。例4求没有选修课程号为2的课程的学生学号。分析:可以认为是在全部学号中去掉选修课程号为2的课

4、程的学生学号,就得出没有选修课程号为2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应 当先投影,再进行差运算。n Sno (Stude nt)- n Sno( T Cno= 2 (SC)特别注意,本题不能写为:n Sno( (T Cnoh 2 (SC)。因为,选择运算为行运算,并且SC表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在SC中找不到。根据题意,要查询没有选修课程号为2课程的学生学号,显然包括没选任何课程的学生学号。当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要 用差运算表示。四、自然连接例5检索不学“ 2”号课

5、程的学生姓名与年龄。分析:首先考虑“差”的问题。先求出全体学生的姓名和年龄,再求出学了”2”号课程的学生的姓名和年龄,最后执行两个集合的差操作。n Sname,Sag&StUdent)-n Sname,Sage( T Cno= 2 (StudentSC)例6查询至少选修了一门其直接先行课为“5”号课程的学生姓名。分析:(1)根据题目确定要输出的列为:Sname,都在Student表中;(2) 根据题意,先行课程名为“5”,则选择的条件为 Cpn0= 5,因为Cpno在Course 表中,所以也要用到 Course表;(3) 根据1, 2两步确定用到的表名集为 Student,Course;(4

6、) 因为表名集中两个表,则要用自然连接将它们连接起来,但因为这个两表不存在共同的列,不能进行自然连接。因此要加入中间表,中间表中应含有能与其它两个表进行自然连接的公共列,这个表就是SC将选择条件Cpno= 5作用于自然连接后产生的新表上,并用投影操作选取要输出的Sn o,C no。综上,该查询的关系代数表达式为:n Sname( T Cpno= 5 (COUSe) |SC ,n Sno,Sname(StUent)或n Snam n Sno( T Cpno= 5 (Course)一 宀SC) YlStuent)五、除1. 除法定义中的含义分析:(1)前提:两个关系 R(X,Y)和S(Y,Z)应该

7、有公共属性列。(2) 运算结果为P(X),元组来自于R关系,只包含X属性列(3) R关系中的哪些元组呢? 对于TX的象集包含n y(S)2. 除法运算的步骤(1) 将被关系R的属性分成两个部分,即与除关系相同的属性部分Y和与除关系不 同的属性部分X。(2) 在除关系中,求 Y的投影,得到目标数据集。(3) 将被除关系进行分组。(分组原则是“值”一样的为一组)(4) 考虑被除关系中已分好的每一元组,如果它的象集包含目标数据集(投影结果),则其值为商。例如,RSABCBCDa1b1C2b1C2d1a2b3C7b2C1d1a3b4C6b2C3d2ab2C3(b)a4b6C6R- Sa2b2C3Aa1

8、b2C1a1(a)(c)分析:在关系R中, A可以取四个值a 1, a2, a3, a4。其中:a1的象集为(b 1,C2),(b2,C3),(b2,C1)a2的象集为(b 3,c?),(b2,C3)a3的象集为(b 4,C6)a4的象集为(b 6,C6) S在 (B,C)上的投影为(b1,C2),(b2,C1),(b2,C3)显然只有ai的象集(B, C) ai包含了 5在(B, C)属性组上的投影,所以 R- S=a 1。 例,R表示选修课程,Si、S2、S3表示课程情况RS1SnoSnameCnoCnameCnoCname1BaoC1DBC2OS1BaoC2OSS21BaoC3DSCno

9、Cname1BaoC4MISC2OS2GuC1DBC4MIS2GuC2OSS33AnC2OSCnoCname4LiC2OSC1DB4LiC4MISC2OSC4MISR- SiR- S2SnoSnameSnoSname1Bao1Bao2Gu4Li3AnR- S34LiSnoSname1Bao3. 除法的物理意义(1)除法的含义:R+ S1表示至少选修S1关系中列出课程的学生的学号和姓名;R+ S2表示至少选修S2关系中列出课程的学生的学号和姓名;(2)求选修 所有课的同学姓名:(S、SC C)说明:针对“全部”特征含义的查询要求,如“全部”、“至少”、“包含”等字眼, 一般要用除法运算。4. 有

10、时需要构造被除数与除数除操作是同时从行和列角度进行运算(S是R的子集),构造被除数与除数。用除法的第一种情况例7检索至少选修课程号为 1和2的学生学号。分析:(1)至少选修课程号为 1和2的关系(表)。(2)考虑用除法来做(3)构造一个临时表K= n Cno( (T Cno= 1 V Cno= 2 (COUSe)(4)构造被除数与除数n Sno,Cno(SC) K用除法的第二种情况例8查询选修了全部课程的学生的学号。1)确定目标属性:学号 Sno;2)确定目标条件:如果学号 X被查询到,说明在临时关系nSno,Cno(SC)表中学号X的像集就是所有课程号Cnc组成的集合;3)确定目标关系:根据

11、1)、2)的分析,可以确定该查询是在nsno,cno (SC)和Course两个关系上进行除法运算。其中,关系SC提供选修信息,而Course提供全部的课程号信息。4) 画查询树:9八兀 sno. eno 皿 eno/ sccourse图3例题2的查询树5) 写出关系代数表达式:n sno,cno(SC) *冗cno(COUSe)。例9查询选修全部课程的学生号码和姓名。(结果需同时满足多个关系的时候用除法)。n Sno,Cno(SC) *冗 Cno(COUrSe) |n Sno,Sname(StUdent)六、综合实例1、设有如下所示的关系:学生表 S(S#,SNAME,AGE,SEX)课程表

12、 C(C#,CNAME,TEACHER)和学生选课表SC(S#,C#,GRADE),其中:S#为学号,SNAM为姓名,AGE为年龄,SEX为性别, C#为课程号,CNAM为课程名,GRAD的成绩,TEACHER为教师。试用关系代数表达式表示下列查询语句:(1) 检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)(2) 检索年龄大于 21的男学生学号(S#)和姓名(SNAME。(3) 检索至少选修“程军”老师所授全部课程的学生姓名(SNAME。(4) 检索“李强”同学不学课程的课程号(C#)。(5) 检索至少选修两门课程的学生学号(S#)。(6) 检索全部学生都选修的课程的课程号(C

13、#)和课程名(CNAME)(7) 检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。(8) 检索选修课程号为 K1和K5的学生学号(S#)。(9) 检索选修全部课程的学生姓名(SNAME。(10) 检索选修课程包含学号为2的学生所修课程的学生学号 (S#)。(11) 检索选修课程名为“ C语言”的学生学号(S#)和姓名(SNAME。 解:本题各个查询语句对应的关系代数表达式表示如下:(1)nC#,CNAmE(T TEACHER=程军(C)(2)nS#,SNAmEd AGE21A SEX男(S)(3)nsnamS? ( n s#,c#(SC) + n(:#( T TEACHEF程军(C

14、)(4)nc#(C)-nT SNAME=李强(S)? SC)(5) n s#( (T 1=4人2M5(SCX SC)(6) n c#,cnamC ? ( n s#,c#(SC) *n s#(S)(7) n S#(SC ? n C#( (T TEACHER=程军 (C)(8) n s#,c# (SC) *n T C#= k1 V C#= k5 (C)(9) ? ( n s#,c#(10) n s#,c# (SC) *n c#( T S#= 2 (SC)(11 )n s#,snamS ? ( n s#(SC ? t cname= c 语言(C)2、设有如下所示的关系:学生表 S(S#,SNAME,

15、AGE,SEX)课程表 C(C#,CNAME,TEACHER)和学生选课表SC(S#,C#,GRADE),其中:S#为学号,SNAM为姓名,AGE为年龄,SEX为性别, C#为课程号,CNAM为课程名,GRAD的成绩,TEACHER为教师。试用关系代数表达式表示下列查询语句:(1) 检索LIU老师所授课程的课程号和课程名;(2) 检索年龄大于23岁的男学生的学号和姓名;(3) 检索学号为S3学生所学课程的课程名与任课教师名;(4) 检索至少选修LIU老师所授课程中一门课的女学生姓名;(5) 检索 WAN同学不学的课程的课程号;(6) 检索既选修了LIU老师的课程、又选修了LI老师课程的学生学号;(7) 全部学生都选修的课程的课程号与课程名;(8) 检索选修课程包含LIU老师所授全部课程的学生学号。 解:本题各个查询语句对应的关系代数表达式表示如下:(1) n c#,cnam* t teacher=liu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论