您好,欢迎访问三七文档
关系代数习题课•现有如下关系:•职工(职工号,姓名,性别,职务,家庭地址,部门编号)•部门(部门编号,部门名称,地址,电话)•保健(保健卡编号,职工号,检查身体日期,健康状况)1.用关系代数表达式写出,查找所有女科长的姓名和家庭地址;2.用关系代数表达式写出,查找“办公室”的科长姓名和家庭地址;3.用关系代数表达式写出,查找“财务科”中健康状况为“良好”的职工姓名和家庭地址。1.用关系代数表达式写出,查找所有女科长的姓名和家庭地址;•∏姓名,家庭地址(σ职务=‘科长’∧性别=‘女’(职工))2.用关系代数表达式写出,查找“办公室”的科长姓名和家庭地址;•∏姓名,家庭地址(σ部门名称=‘办公室’(部门)∞σ职务=‘科长’(职工))3.用关系代数表达式写出,查找“财务科”中健康状况为“良好”的职工姓名和家庭地址。∏姓名,家庭地址(职工∞σ健康状况=‘良好’(保健)∞σ部门名称=‘财务’(部门)•S(SNO,SNAME,AGE,SEX,SDEPT)•SC(SNO,CNO,GRADE)•C(CNO,CNAME,CDEPT,TNAME)有如下关系表1.LIU老师所教授课程的课程号,课程名2.检索年龄大于23岁的男学生的学号和姓名3.检索学号为S3学生所学课程的课程名与任课老师名4.检索至少选修LIU老师所教授课程中一门课的女学生姓名1.LIU老师所教授课程的课程号,课程名∏CNO,CNAME(σTNAME=‘LIU’(C)2.检索年龄大于23岁的男学生的学号和姓名∏SNO,SNAME(σAGE23∧SEX=‘M’(S))3.检索学号为S3学生所学课程的课程名与任课老师名∏CNAME,TNAME(σSNO=‘S3’(SC)∞(C))4.检索至少选修LIU老师所教授课程中一门课的女学生姓名∏SNAME(σSEX=‘F’(S)∞SC∞σTNAME=‘LIU’(C))5.检索wang同学不学课程的课程号6.检索至少选修两门课的学生学号7.检索全部学生都选修的课程的课程号和课程名8.检索选修课程包含LIU老师所教授课程的学生学号5.检索wang同学不学课程的课程号∏CNO(C)-∏CNO(σSNAME=‘WANG’(S)∞SC)6.检索至少选修两门课的学生学号∏1(σ1=4∧2!=5(SC×SC))7.检索全部学生都选修的课程的课程号和课程名∏CNO,CNAME,SNO(C∞SC)÷∏SNO(S)8.检索选修课程包含LIU老师所教授课程的学生学号∏CNO,SNO(SC)÷∏CNO(σTNAME=‘LIU’(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零件的供应商号码SNO•供应工程J1零件P1的供应商号码SNO•供应工程J1零件为红色的供应商号码SNO•没有使用天津供应商生产的红色零件的工程号JNO•至少用了供应商S1所供应的全部零件的工程号关系代数1.∏SNO(σJNO=’J1’(SPJ))2.∏SNO(σJNO=’J1’∧PNO=’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))•设数据库中有两个基本表:•职工表EMP(E#,ENAME,AGE,SALARY,D#),其属性分别表示职工工号、姓名、年龄、工资和工作部门的编号。•部门表DEPT(D#,DNAME,MGR#),其属性分别表示部门编号、部门名称和部门经理的职工工号。•试指出每个表的主键和外键。在上面两个基本表中,写出下列查询的关系代数表达式:•检索每个部门经理的工资,要求显示其部门编号、部门名称、经理工号、经理姓名和经理工资•设数据库中有两个基本表:•职工表EMP(E#,ENAME,AGE,SALARY,D#),其属性分别表示职工工号、姓名、年龄、工资和工作部门的编号。•部门表DEPT(D#,DNAME,MGR#),其属性分别表示部门编号、部门名称和部门经理的职工工号。•试指出每个表的主键和外键。在上面两个基本表中,写出下列查询的关系代数表达式:•检索每个部门经理的工资,要求显示其部门编号、部门名称、经理工号、经理姓名和经理工资•∏D#,DNAME,MGR#,ENAME,SALARY(σE#=MGR#(部门∞职工))•设某商业集团为仓库存储商品设计了三个基本表:•仓库:STORE(S#,SNAME,SADDR),其属性是仓库编号、仓库名称和地址。•存储:SG(S#,G#,QUANTITY),其属性是仓库编号、商品编号和数量。•商品:GOODS(G#,GNAME,PRICE),其属性是商品编号、商品名称和单价•现检索仓库名称为“莘庄”的仓库里存储的商品的编号和名称。试写出相应的关系代数表达式•设某商业集团为仓库存储商品设计了三个基本表:•仓库:STORE(S#,SNAME,SADDR),其属性是仓库编号、仓库名称和地址。•存储:SG(S#,G#,QUANTITY),其属性是仓库编号、商品编号和数量。•商品:GOODS(G#,GNAME,PRICE),其属性是商品编号、商品名称和单价•现检索仓库名称为“莘庄”的仓库里存储的商品的编号和名称。试写出相应的关系代数表达式•∏G#,GNAME(Goods∞SG∞σSNAME=‘莘庄’(Store))•已知:一组关系模式:•部门(部门号,部门名称,电话号码)•职工(职工号,姓名,性别,职务,部门号)•工程(项目号,项目名称,经费预算)•施工(职工号,项目号,工时)•工资级别(职务,小时工资率)根据这组关系模式回答:•1.用关系代数表达式写出职务为“工程师”的姓名和部门名称。•2.用关系代数表达式写出姓名为“潘小光”的职工所在的部门名称和电话号码。1.用关系代数表达式写出职务为“工程师”的姓名和部门名称。•∏姓名,部门名称(部门∞σ职务=‘工程师’(职工))2.用关系代数表达式写出姓名为“潘小光”的职工所在的部门名称和电话号码。•∏部门名称,电话(部门∞σ姓名=‘潘小光’(职工))•[例]设教学数据库中有3个关系:学生关系S(SNO,SNAME,AGE,SEX)学习关系SC(SNO,CNO,GRADE)课程关系C(CNO,CNAME,TEACHER)•下面用关系代数表达式表达每个查询语句。•(1)检索学习课程号为C2的学生学号与成绩。••(1)检索学习课程号为C2的学生学号与成绩。•πSNO,GRADE(σCNO='C2‘(SC))•(2)检索学习课程号为C2的学生学号与姓名•(2)检索学习课程号为C2的学生学号与姓名•πSNO,SNAME(σCNO='C2‘(SSC))•由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。•此查询亦可等价地写成:•πSNO,SNAME(S)(πSNO(σCNO='C2‘(SC)))•这个表达式中自然连接的右分量为学了C2课的学生学号的集合。这个表达式比前一个表达式优化,执行起来要省时间,省空间。•(3)检索选修课程名为MATHS的学生学号与姓名。•(3)检索选修课程名为MATHS的学生学号与姓名。•πSNO,SANME(σCNAME='MATHS‘(SSCC))•(4)检索选修课程号为C2或C4的学生学号。•(4)检索选修课程号为C2或C4的学生学号。πSNO(σCNO='C2'∨CNO='C4‘(SC))•(5)检索至少选修课程号为C2和C4的学生学号。•(5)检索至少选修课程号为C2和C4的学生学号。π1(σ1=4∧2='C2'∧5='C4'(SC×SC))•这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。•比较这一题与上一题的差别。•(6)检索不学C2课的学生姓名与年龄。•(6)检索不学C2课的学生姓名与年龄。•πSNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(SSC))•这个表达式用了差运算,差运算的左分量为全体学生的姓名和年龄,右分量为学了C2课的学生姓名与年龄。•(7)检索学习全部课程的学生姓名。•(7)检索学习全部课程的学生姓名。编写这个查询语句的关系代数过程如下:(a)学生选课情况可用πSNO,CNO(SC)表示;(b)全部课程可用πCNO(C)表示;•(c)学了全部课程的学生学号可用除法操作表示。操作结果为学号SNO的集合,该集合中每个学生(对应SNO)与C中任一门课程号CNO配在一起都在πSCO,CNO(SC)中出现(即SC中出现),所以结果中每个学生都学了全部的课程(这是除法操作的含义):πSNO,CNO(SC)÷πCNO(C)•(d)从SNO求学生姓名SNAME,可以用自然连结和投影操作组合而成:πSNAME(S(πSNO,CNO(SC)÷πCNO(C)))这就是最后得到的关系代数表达式。•(8)检索所学课程包含S3所学课程的学生学号。注意:学生S3可能学多门课程,所以要用到除法操作来表达此查询语句。•学生选课情况可用操作πSNO,CNO(SC)表示;所学课程包含学生S3所学课程的学生学号,可以用除法操作求得:πSNO,CNO(SC)÷πCNO(σSNO='S3‘(SC))•设有一个教学数据库,包括以下三个关系模式:•学生S(Sno,Sname,Ssex,Sage,Sdept)•课程C(Cno,Cname,Cpno,Ccredit)•学习SC(Sno,Cno,Grade)•学生关系模式属性分别对应学号、姓名、性别、年龄、所在院系•课程关系模式属性分别对应课程号、课程名、先行课、学分•学习关系模式分别对应学号、课程号、成绩•1、查询学生95001的姓名和所在系。•πSname,Sdept(σSno=‘95001’(S))•2、查询至少选修了两门课程的学生学号。•πSno(σ[1]=[4]∧[2]≠[5](SC×SC))•3、查询选修了1号课程的学生姓名。•πSname(σCno=’1’(SSC))•4、查询没有选修数据库课程的学生姓名。•πSname(S)-πSname(σCname=’数据库’(SSCC)•5、查询至少选修了1号课程和3号课程的学生学号。•πSno,Cno(SC)÷πCno(σCno=‘1’∨Cno=‘3’(C))•考虑如下所定义的学生-教师-课程信息数据库(其中加下划线的是主码),试完成下列各小题:•Student(Sno,Sname,Sage,Ssex,Class)(学生信息表)•Teacher(Tno,Tname,Tsex,Tage,Tprof,Tdept)(教师信息表)•Course(Cno,Cname,Tno)(课程信息表)•SC(Sno,Cno,Grade)(选课表)•试用关系代数表示下列查询语句:(1)查询年龄不大于22岁的女学生的姓名和学号;•(2)查询选修了“李军”老师所授的课程名为“数据库”的学生学号和姓名;•(3)查询至少选修了教师编号(Tno)为826的老师所授全部课程的学生学号。
本文标题:关系代数例题讲解.
链接地址:https://www.777doc.com/doc-2628680 .html