《关系代数例题讲解精.ppt》由会员分享,可在线阅读,更多相关《关系代数例题讲解精.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关系代数例题讲解第1页,本讲稿共33页现有如下关系:职工(职工号,姓名,性别,职务,家庭地址,部门编号)部门(部门编号,部门名称,地址,电话)保健(保健卡编号,职工号,检查身体日期,健康状况)1.用关系代数表达式写出,查找所有女科长的姓名和家庭地址;2.用关系代数表达式写出,查找“办公室”的科长姓名和家庭地址;3.用关系代数表达式写出,查找“财务科”中健康状况为“良好”的职工姓名和家庭地址。第2页,本讲稿共33页1.用关系代数表达式写出,查找所有女科长的姓名和家庭地址;姓名,家庭地址(姓名,家庭地址(职务职务=科长科长 性别性别=女女(职工)(职工)2.用关系代数表达式写出,查找“办公室”的科
2、长姓名和家庭地址;姓名,家庭地址(姓名,家庭地址(部门名称部门名称=办公室办公室(部(部门)门)职务职务=科长科长 (职工)(职工)3.用关系代数表达式写出,查找“财务科”中健康状况为“良好”的职工姓名和家庭地址。姓名,家庭地址(姓名,家庭地址(职工职工 健康状况健康状况=良好良好(保健)(保健)部门名称部门名称=财务财务(部门)(部门)第3页,本讲稿共33页S(SNO,SNAME,AGE,SEX,SDEPT)SC(SNO,CNO,GRADE)C(CNO,CNAME,CDEPT,TNAME)有如下关系表第4页,本讲稿共33页1.LIU老师所教授课程的课程号,课程名老师所教授课程的课程号,课程名
3、 CNO,CNAMECNO,CNAME(TNAME=TNAME=LIULIU (C C)2.检索年龄大于检索年龄大于23岁的男学生的学号和姓名岁的男学生的学号和姓名 SNO,SNAMESNO,SNAME(AGE23 AGE23 SEX=SEX=M M(S S)3.检索学号为检索学号为S3学生所学课程的课程名与任学生所学课程的课程名与任课老师名课老师名CNAME,TNAMECNAME,TNAME(SNO=SNO=S3S3(SCSC)(C)(C))4.检索至少选修检索至少选修LIU老师所教授课程中一门课老师所教授课程中一门课的女学生姓名的女学生姓名SNAMESNAME(SEX=SEX=F F(S)
4、SC(S)SCTNAME=TNAME=LIULIU(C)(C)第5页,本讲稿共33页5.检索检索wang同学不学课程的课程号同学不学课程的课程号CNOCNO(C)-(C)-CNOCNO(SNAME=SNAME=WANGWANG(S)SC)(S)SC)6.检索至少选修两门课的学生学号检索至少选修两门课的学生学号1 1(1=4 1=4 2!=5 2!=5(SC(SC SC)SC)7.检索全部学生都选修的课程的课程号和课程检索全部学生都选修的课程的课程号和课程名名CNO,CNAME,SNOCNO,CNAME,SNO(C SC)(C SC)SNOSNO(S)(S)8.检索选修课程包含检索选修课程包含L
5、IU老师所教授课程的学老师所教授课程的学生学号生学号 CNO,SNOCNO,SNO(SC)(SC)CNOCNO(TNAME=TNAME=LIULIU(C)(C)第6页,本讲稿共33页设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式S(SNO,SNAME,STATUS,CITY)供应商编号、名称、状态、所在城市P(PNO,PNAME,COLOR,WEIGHT)零件编号、名称、颜色、重量J(JNO,JNAME,CITY)工程项目编号、名称、所在城市SPJ(SNO,PNO,JNO,QTY)供应商编号、零件编号、项目编号、供应数量(某供应商供应某种零件给某工程项目的数量)第7页,本讲稿共33页
6、要求用关系代数要求用关系代数供应工程J1零件的供应商号码SNO供应工程J1零件P1的供应商号码SNO供应工程J1零件为红色的供应商号码SNO没有使用天津供应商生产的红色零件的工程号JNO至少用了供应商S1所供应的全部零件的工程号第8页,本讲稿共33页关系代数1.SNO(JNO=J1(SPJ)2.SNO(JNO=J1PNO=P1(SPJ)3.SNO(JNO=J1(SPJ)(Color=红(P)4.JNO(J)-JNO(CITY=天津(S)SPJ(Color=红(P)5.JNO,PNO(SPJ)PNO(SNO=S1(SPJ)第9页,本讲稿共33页设数据库中有两个基本表:设数据库中有两个基本表:职工
7、表职工表 EMPEMP(E#E#,ENAMEENAME,AGEAGE,SALARYSALARY,D#D#),),其属性分别表示职工工号、姓名、年龄、工资和其属性分别表示职工工号、姓名、年龄、工资和工作部门的编号。工作部门的编号。部门表部门表 DEPTDEPT(D#D#,DNAMEDNAME,MGR#MGR#),其属性分别其属性分别表示部门编号、部门名称和部门经理的职工工号。表示部门编号、部门名称和部门经理的职工工号。试指出每个表的主键和外键。在上面两个基本表试指出每个表的主键和外键。在上面两个基本表中,写出下列查询的关系代数表达式:中,写出下列查询的关系代数表达式:检索每个部门经理的工资,要求
8、显示其部门编号、检索每个部门经理的工资,要求显示其部门编号、部门名称、经理工号、经理姓名和经理工资部门名称、经理工号、经理姓名和经理工资D#D#,DNAMEDNAME,MGR#MGR#,ENAMEENAME,SALARYSALARY(E#=MGR#E#=MGR#(部门(部门职工)职工)第10页,本讲稿共33页设某商业集团为仓库存储商品设计了三个基本表:仓库:STORE(S#,SNAME,SADDR),其属性是仓库编号、仓库名称和地址。存储:SG(S#,G#,QUANTITY),其属性是仓库编号、商品编号和数量。商品:GOODS(G#,GNAME,PRICE),其属性是商品编号、商品名称和单价现
9、检索仓库名称为“莘庄”的仓库里存储的商品的编号和名称。试写出相应的关系代数表达式 G#,GNAMEG#,GNAME(GoodsSG GoodsSG SNAME=SNAME=莘庄莘庄(StoreStore)第11页,本讲稿共33页已知:一组关系模式:部门(部门号,部门名称,电话号码)职工(职工号,姓名,性别,职务,部门号)工程(项目号,项目名称,经费预算)施工(职工号,项目号,工时)工资级别(职务,小时工资率)根据这组关系模式回答:1用关系代数表达式写出职务为“工程师”的姓名和部门名称。2用关系代数表达式写出姓名为“潘小光”的职工所在的部门名称和电话号码。第12页,本讲稿共33页1用关系代数表达
10、式写出职务为用关系代数表达式写出职务为“工程师工程师”的姓名和部门名称。的姓名和部门名称。姓名,部门名称(部门姓名,部门名称(部门 职务职务=工程师工程师(职工)(职工)2.用关系代数表达式写出姓名为用关系代数表达式写出姓名为“潘小光潘小光”的的职工所在的部门名称和电话号码。职工所在的部门名称和电话号码。部门名称,电话(部门部门名称,电话(部门 姓名姓名=潘小光潘小光(职工)(职工)第13页,本讲稿共33页例例设教学数据库中有设教学数据库中有3个关系:个关系:学生关系学生关系S(SNO,SNAME,AGE,SEX)学习关系学习关系SC(SNO,CNO,GRADE)课程关系课程关系C(CNO,C
11、NAME,TEACHER)下面用关系代数表达式表达每个查询语下面用关系代数表达式表达每个查询语句。句。第14页,本讲稿共33页(1)检索学习课程号为检索学习课程号为C2的学生学号与成绩。的学生学号与成绩。SNO,GRADE(CNO=C2(SC)第15页,本讲稿共33页(2)检索学习课程号为检索学习课程号为C2的学生学号与姓名的学生学号与姓名SNO,SNAME(CNO=C2(SSC)由于这个查询涉及到两个关系由于这个查询涉及到两个关系S和和SC,因此先对这两个关系进,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。行自然连接,同一位学生的有关的信息,然后再执行选择
12、投影操作。此查询亦可等价地写成:此查询亦可等价地写成:SNO,SNAME(S)(SNO(CNO=C2(SC))这个表达式中自然连接的右分量为这个表达式中自然连接的右分量为学了学了C2课的学生学号课的学生学号的集合的集合。这个表达式比前一个表达式优化,执行起来要省时。这个表达式比前一个表达式优化,执行起来要省时间,省空间。间,省空间。第16页,本讲稿共33页(3)检索选修课程名为MATHS的学生学号与姓名。SNO,SANME(CNAME=MATHS(SSCC)第17页,本讲稿共33页(4)检索选修课程号为C2或C4的学生学号。SNO(CNO=C2 CNO=C4(SC)第18页,本讲稿共33页(5
13、)检索至少选修课程号为检索至少选修课程号为C2和和C4的学的学生学号。生学号。1(1=4 2=C2 5=C4(SCSC))这里(这里(SCSC)表示关系)表示关系SC自身相乘自身相乘的乘积操作,其中数字的乘积操作,其中数字1,2,4,5都为它都为它的结果关系中的属性序号。的结果关系中的属性序号。比较这一题与上一题的差别。比较这一题与上一题的差别。第19页,本讲稿共33页(6)检索不学检索不学C2课的学生姓名与年龄。课的学生姓名与年龄。SNAME,AGE(S)SNAME,AGE(CNO=C2(SSC))这个表达式用了差运算,差运算的左分这个表达式用了差运算,差运算的左分量为量为全体学生的姓名和年
14、龄全体学生的姓名和年龄,右分量为,右分量为学了学了C2课的学生姓名与年龄课的学生姓名与年龄。第20页,本讲稿共33页(7)检索学习全部课程的学生姓名。)检索学习全部课程的学生姓名。编写这个查询语句的关系代数过程如下:编写这个查询语句的关系代数过程如下:(a)学生选课情况可用学生选课情况可用SNO,CNO(SC)表示;表示;(b)全部课程可用全部课程可用CNO(C)表示;表示;第21页,本讲稿共33页(c)学了全部课程的学生学号可用除法操作表示。学了全部课程的学生学号可用除法操作表示。操作结果为学号操作结果为学号SNO的集合,该集合中每个学生的集合,该集合中每个学生(对应(对应SNO)与与C中任
15、一门课程号中任一门课程号CNO配在一起都在配在一起都在SCO,CNO(SC)中出现(即中出现(即SC中出现),所以结果中出现),所以结果中每个学生都学了全部的课程(这是中每个学生都学了全部的课程(这是除法除法操作的含操作的含义):义):SNO,CNO(SC)CNO(C)第22页,本讲稿共33页(d)从从SNO求学生姓名求学生姓名SNAME,可以用自,可以用自然连结和投影操作组合而成:然连结和投影操作组合而成:SNAME(S(SNO,CNO(SC)CNO(C)这就是最后得到的关系代数表达式。这就是最后得到的关系代数表达式。第23页,本讲稿共33页(8)检索所学课程包含检索所学课程包含S3所学课程
16、的学所学课程的学生学号。生学号。注意:注意:学生学生S3可能学多门课程,所以要用可能学多门课程,所以要用到除法操作来表达此查询语句。到除法操作来表达此查询语句。第24页,本讲稿共33页学生选课情况可用操作学生选课情况可用操作SNO,CNO(SC)表表示;示;所学课程包含学生所学课程包含学生S3所学课程的学生学所学课程的学生学号,可以用除法操作求得:号,可以用除法操作求得:SNO,CNO(SC)CNO(SNO=S3(SC)第25页,本讲稿共33页设有一个教学数据库,包括以下三个关系模式:设有一个教学数据库,包括以下三个关系模式:学生学生S(Sno,Sname,Ssex,Sage,Sdept)课程
17、课程C(Cno,Cname,Cpno,Ccredit)学习学习SC(Sno,Cno,Grade)学生关系模式属性分别对应学号、姓名、性别、年龄、所在院系学生关系模式属性分别对应学号、姓名、性别、年龄、所在院系课程关系模式属性分别对应课程号、课程名、先行课、学分课程关系模式属性分别对应课程号、课程名、先行课、学分学习关系模式分别对应学号、课程号、成绩学习关系模式分别对应学号、课程号、成绩第26页,本讲稿共33页1、查询学生、查询学生95001的姓名和所在系。的姓名和所在系。Sname,Sdept(Sno=95001(S)第27页,本讲稿共33页2、查询至少选修了两门课程的学生学号。、查询至少选修
18、了两门课程的学生学号。Sno(1=425(SCSC)第28页,本讲稿共33页3、查询选修了、查询选修了1号课程的学生姓名。号课程的学生姓名。Sname(Cno=1(SSC)第29页,本讲稿共33页4、查询没有选修数据库课程的学生姓名。、查询没有选修数据库课程的学生姓名。Sname(S)-Sname(Cname=数据库(SSCC)第30页,本讲稿共33页5、查询至少选修了、查询至少选修了1号课程和号课程和3号课程的学号课程的学生学号。生学号。Sno,Cno(SC)Cno(Cno=1Cno=3(C)第31页,本讲稿共33页考虑如下所定义的学生考虑如下所定义的学生-教师教师-课程信息数据库(其中加课
19、程信息数据库(其中加下划线的是主码),试完成下列各小题:下划线的是主码),试完成下列各小题:Student(Sno,Sname,Sage,Ssex,Class)(学生信息表)(学生信息表)Teacher(Tno,Tname,Tsex,Tage,Tprof,Tdept)(教师信息表)(教师信息表)Course(Cno,Cname,Tno)(课程信息表)(课程信息表)SC(Sno,Cno,Grade)(选课表)(选课表)第32页,本讲稿共33页试用关系代数表示下列查询语句:试用关系代数表示下列查询语句:(1)查询年龄不大于)查询年龄不大于22岁的女学生的姓名和学号;岁的女学生的姓名和学号;(2)查询选修了)查询选修了“李军李军”老师所授的课程名为老师所授的课程名为“数据库数据库”的学生学号和姓名;的学生学号和姓名;(3)查询至少选修了教师编号()查询至少选修了教师编号(Tno)为)为826的老的老师所授全部课程的学生学号。师所授全部课程的学生学号。第33页,本讲稿共33页
限制150内