资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,关系代数习题,1,关系代数的9种操作,并、交、差、乘、选择、投影、联接、除、自然联接运算。,五个基本操作:,并() 差(-) 笛卡尔积()交(),四个组合操作:,投影 () 选择 () 连接(等值连接、自然连接) 除法(),2,例设教学数据库中有3个关系:学生关系 S(SNO,SNAME,AGE,SEX)学习关系 SC(SNO,CNO,GRADE)课程关系 C(CNO,CNAME,TEACHER),下面用关系代数表达式表达每个查询语句。,3,(1) 检索学习课程号为C2的学生学号与成绩。,(2) 检索学习课程号为C2的学生学号与姓名,(3)检索选修课程名为MATHS的学生学号与姓名。,(4) 检索选修课程号为C2或C4的学生学号。,(5) 检索至少选修课程号为C2和C4的学生学号。,(6) 检索不学C2课的学生姓名与年龄。,(7) 检索学习全部课程的学生姓名。,(8) 检索所学课程包含S3所学课程的学生学号。,4,(1) 检索学习课程号为C2的学生学号与成绩。,SNO, GRADE,(,CNO=C2,(SC),5,(2) 检索学习课程号为C2的学生学号与姓名,SNO,SNAME,(,CNO=C2,(S SC),由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。,此查询亦可等价地写成:,SNO,SNAME,(S) (,SNO,(,CNO=C2,(SC)),这个表达式中自然连接的右分量为学了C2课的学生学号的集合。这个表达式比前一个表达式优化,执行起来要省时间,省空间。,6,(3)检索选修课程名为MATHS的学生学号与姓名。,SNO,SANME,(,CNAME=MATHS,(S SC C),7,(4)检索选修课程号为C2或C4的学生学号。,SNO,(,CNO=C2CNO=C4,(SC),8,(5) 检索至少选修课程号为C2和C4的学生学号。 ,1,(,1=42=C25=C4,(SCSC)),这里(SCSC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。,比较这一题与上一题的差别。,9,(,6) 检索不学C2课的学生姓名与年龄。,SNAME,AGE,(S),SNAME,AGE,(,CNO=C2,(S SC)),这个表达式用了差运算,差运算的左分量为全体学生的姓名和年龄,右分量为学了C2课的学生姓名与年龄。,10,(7)检索学习全部课程的学生姓名。,编写这个查询语句的关系代数过程如下:,(a) 学生选课情况可用,SNO,CNO,(SC)表示;,(b) 全部课程可用,CNO,(C)表示;,11,(c) 学了全部课程的学生学号可用除法操作表示。 操作结果为学号SNO的集合,该集合中每个学生(对应SNO)与C中任一门课程号CNO配在一起都在,SCO,CNO,(SC) 中出现(即SC中出现),所以结果中每个学生都学了全部的课程(这是除法操作的含义): ,SNO,CNO,(SC) ,CNO,(C),12,(d) 从SNO求学生姓名SNAME,可以用自然连结和投影操作组合而成:,SNAME,(S (,SNO,CNO,(SC) ,CNO,(C)这就是最后得到的关系代数表达式。,13,(8) 检索所学课程包含S3所学课程的学生学号。注意:学生S3可能学多门课程,所以要用到除法操作来表达此查询语句。,14,学生选课情况可用操作 ,SNO,CNO,(SC)表示; 所学课程包含学生S3所学课程的学生学号,可以用除法操作求得:,SNO,CNO,(SC),CNO,(,SNO=S3,(SC),15,设有一个教学数据库,包括以下三个关系模式:,学生S (Sno,Sname,Ssex,Sage,Sdept),课程C (Cno,Cname,Cpno,Ccredit),学习SC (Sno,Cno,Grade),学生关系模式属性分别对应学号、姓名、性别、年龄、所在院系,课程关系模式属性分别对应课程号、课程名、先行课、学分,学习关系模式分别对应学号、课程号、成绩,16,1、查询学生95001的姓名和所在系。,Sname,Sdept,(,Sno =95001,(S),17,2、查询至少选修了两门课程的学生学号。,Sno,(,1=4 25,(SCSC),18,3、查询选修了1号课程的学生姓名。,Sname,(,Cno=1,(S SC),19,4、查询没有选修数据库课程的学生姓名。,Sname,(S)-,Sname,(,Cname=数据库,( S SC C),20,5、查询至少选修了1号课程和3号课程的学生学号。,Sno, Cno,(SC) ,Cno,(,Cno=1 Cno=3,(C),21,考虑如下所定义的学生-教师-课程信息数据库(其中加下划线的是主码),试完成下列各小题:,Student(,Sno,,Sname,Sage,Ssex,Class)(学生信息表),Teacher(,Tno,,Tname,Tsex,Tage,Tprof,Tdept)(教师信息表),Course(,Cno,,Cname,Tno)(课程信息表),SC(,Sno,,,Cno,,Grade)(选课表),22,试用关系代数表示下列查询语句:(1)查询年龄不大于22岁的女学生的姓名和学号;,(2)查询选修了“李军”老师所授的课程名为“数据库”的学生学号和姓名;,(3)查询至少选修了教师编号(Tno)为826的老师所授全部课程的学生学号。,23,设有一个教学数据库,包括以下三个关系模式:,学生S (Sno,Sname,Ssex,Sage,Sdept),课程C (Cno,Cname,Cpno,Ccredit),学习SC (Sno,Cno,Grade),学生关系模式属性分别对应学号、姓名、性别、年龄、所在院系,课程关系模式属性分别对应课程号、课程名、先行课、学分,学习关系模式分别对应学号、课程号、成绩,24,1、查询学生95001的姓名和所在系。,Sname,Sdept,(,Sno =95001,(S),25,2、查询至少选修了两门课程的学生学号。,Sno,(,1=4 25,(SCSC),26,3、查询选修了1号课程的学生姓名。,Sname,(,Cno=1,(S SC),27,4、查询没有选修数据库课程的学生姓名。,Sname,(S)-,Sname,(,Cname=数据库,( S SC C),28,5、查询至少选修了1号课程和3号课程的学生学号。,Sno, Cno,(SC) ,Cno,(,Cno=1 Cno=3,(C),29,考虑如下所定义的学生-教师-课程信息数据库(其中加下划线的是主码),试完成下列各小题:,Student(,Sno,,Sname,Sage,Ssex,Class)(学生信息表),Teacher(,Tno,,Tname,Tsex,Tage,Tprof,Tdept)(教师信息表),Course(,Cno,,Cname,Tno)(课程信息表),SC(,Sno,,,Cno,,Grade)(选课表),30,试用关系代数表示下列查询语句:(1)查询年龄不大于22岁的女学生的姓名和学号;,(2)查询选修了“李军”老师所授的课程名为“数据库”的学生学号和姓名;,(3)查询至少选修了教师编号(Tno)为826的老师所授全部课程的学生学号。,31,
展开阅读全文