资源描述:
《数据库课堂练习全(答案全)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一.以下涉及的教学数据库含有4个关系,方便起见,其名称简化为T、S、C和SC教师关系T(Tno,Tname,Title)学生关系S(Sno,Sname,Age,Sex)课程关系C(Cno,Cname,Tno)选课关系SC(Sno,Cno,Score)1.查询选修了课程号为C2课程的学生学号和姓名2.查询至少选修了钟教授所教课程中一门课程的学生学号和姓名。3.查询不选修C2课程的学生姓名和年龄。4.查询选修了全部课程的学生姓名。5.查询至少有学号为S2和S4学生选修的课程的课程号。解:1.ΠSno,Sname(6Cno=’C2’(SSC)
2、)2.ΠSno,Sname(6Tname=’钟’(SSCTC))3.ΠSname,Age(S)——ΠSname,Age(6Cno=’C2’(SSC))4.ΠSname(S(ΠSno,Cno(SC)))——ΠCno(C))5.ΠCno(61.Sno=’S2’∧2.Sno=’S4’∧(SC*SC))二、以下涉及的教学数据库含有4个关系,方便起见,其名称简化为T、S、C和SC教师关系T(Tno,Tname,Title)学生关系S(Sno,Sname,Age,Sex)课程关系C(Cno,Cname,Tno)选课关系SC(Sno,Cno,Scor
3、e)要求检索女同学选修课程的课程名和任课教师名。1.试写出该查询的关系代数表达式Πcname,Tname(sex='女'(SSCCT))2.画出查询表达式的语法树1.使用启发式优化算法,对语法树进行优化,并画出优化后的语法树三、用SQL完成下面的查询和操作1.查询不选修C2课程的学生姓名和年龄。2.查询至少选修课程号C2和C4的学生学号。3.求每一教师每门课程的学生选修人数(超过30人),要求显示教师工号、课程号和学生人数。查询结果按人数升序排列,人数相同按工号升序、课程号按降序排列。4.查询只开设一门课程的教师工号和姓名。5.把平均成
4、绩大于80分的男同学的学号和平均成绩存入另一个已存在的表S_Score(Sno,AVG_Score)中。解:1.不选C2的姓名和年龄selectSname,SagefromS,SCWheres.sno=sc.snoandc.cnonotin‘C2’;2.至少选修C2,C4的学号selectA.snofromscasAscasBwhereA.sn=B.snoandA.cno=’C2’andB.cno=’C4’3.selectTnoc.Cno,count(Sno)fromC,SCwhereC.Cno=SC.CnogroupbyTno,C.C
5、nohavingcount(s.sno)>30orderbycount(s.sno),Tno,C.CnoDESC4.selectTno,TnamefromTwhereUnique(selectTnofromCwhereC.Tno=T.Tno)5.InsertintoS_Score(Sno,AVG_Score)selectSno,avg(Score)fromSCwhereSno(selectSnofromSwhereSex=’男’)groupbySnohavingArg(Score)>80四、设某商业集团数据库中有三个实体集。一是“商店”
6、实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。1.试画出ER图,并在图上注明属性、联系的类型。2.将ER图转换成关系模型,并注明主键和外键。商店商店编号商店名地址商品商品号商品名规格单价销售商店编号商品号职工职工
7、编号姓名性别业绩五、查询计算机学生选修的所有课程名称1.写出SQL2.画出查询树、语法树,利用代数优化对原始语法树进行优化,画出优化语法树答:1.SQL:selectcnameFroms,sc,cwherec.cno=sc.cnoandsc.sno=s.snoandsdept=’计算机系’2.六、设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式记录商店里每个职工的日营业额以及职工所在的部门和经理信息。如果规定:每个职工只在一个部门工作;每个部门只有一个经理。则:1.根据上述规定,写出模式R的基本FD和码;关系模式R(
8、职工编号,日期,日营业额,部门名,部门经理)码:日期和职工编号2.说明R不是2NF的理由,并把R分解成2NF模式集非主属性:部门各部分依赖于码分解:R1(职工编号,日期,日营业额)R2(职工编号,部门名,部