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