-1-苏州大学数据库原理与设计课程期中试卷共6页考试形式闭卷2014年5月院系年级专业学号姓名成绩一、选择题(每题2分,共30分)1.数据库系统与文件系统的主要区别是。()A.数据库系统复杂,而文件系统简单B.文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决C.文件系统只能管理程序文件,而数据库系统能够管理各种类型的文件D.文件系统管理的数据量较少,而数据库系统可以管理庞大的数据量2.在数据库中存储的是()A.数据B.数据模型C.数据以及数据之间的联系D.信息3.数据库三级模式体系结构的划分,有利于保持数据库的。()A.数据独立性B.数据安全性C.结构规范化D.操作可行性4.在数据库中,产生数据不一致的根本原因是。()A.数据存储量太大B.没有严格保护数据C.未对数据进行完整性控制D.数据冗余5.表示概念模型最常用的是。()A.E-R方法B.数据模型C.面向对象方法D.关系模型6.从E-R模型关系向关系模型转换时,一个M:N联系转换为关系模式时,该关系模式的关键字是。()A.M端实体的关键字B.N端实体的关键字C.M端实体关键字与N端实体关键字组合D.重新选取其他属性7.关系模式中,满足2NF的模式。()A.可能是1NFB.必定是1NFC.必定是3NFD.必定是BCNF8.一般情况下,当对关系R和S使用自然联接时,要求R和S至少含有一个共同的。()A.记录B.行C.数据字典D.属性-2-9.SQL语言具有()的功能。A.关系规范化、数据操纵、数据控制B.数据定义、数据操纵、数据控制C.数据定义、关系规范化、数据控制D.数据定义、关系规范化、数据操纵10.数据库设计阶段分为()A.物理设计阶段、逻辑设计阶段、编程和调试阶段B.概念设计阶段、逻辑设计阶段、物理设计阶段、实施和调试阶段C.方案设计阶段、总体设计阶段、个别设计和编程阶段D.模型设计阶段、程序设计阶段和运行阶段11.下列聚合函数中不忽略空值(null)的是()A.SUM(列名)B.MAX(列名)C.COUNT(*)D.AVG(列名)12.对所有视图都可以进行()A.selectB.insertC.updateD.delete13.关系中的某一属性组,若它的值唯一地标识了一元组,则称该属性组为()A、候选码B、超码C、外来码D、替代码14.在SQL语言中有如下操作:SELECTDISTINCTS#FROMSC;其中DISTINCT表示()A、在取值中加上重复的S#B、在取值中去掉重复的S#C、在结果中加上重复的S#D、在结果中去掉重复的S#15、IBM公司的E.F.Codd提出了数据库的。A.层次模型B.关系模型C.图灵奖D.网络模型二、设计题(15分)某保险公司关于汽车保险涉及以下查询和登录:·查询投保人:输入保险号,输出投保人姓名、投保的汽车、型号;·事故登录:登录事故编号、出事汽车牌照、车主、赔偿金、稽查人。根据上述用户需求,要求作出:(1)画出实体联系模型(E-R图)。(2)从E-R图导出关系模型,并说明主键、外键。实体:投保人保险(汽车)事故联系投保人购买保险,保险记录事故-3-三、计算题(15分)关系RABC367257723443关系SADE345723请计算:R∪S,R-S,R∩S,RS,,()EDS,5()BR,R左外连接S的结果.R∪SABC367257723443345R-S出现在R中,不出现在S中ABC367257443R∩SABC723RSABCs.Ade367345367723257345257723723345723723443345-4-443723,()EDSDE45235()BRABC723443R左外连接SABCs.Ade367345257NullNullnull723723443NullNullnull-5-四、设有关系模式R(U,F),其中:U={A,B,C,D,E},F={A→BC,CD→E,E→A,B→D},求出R的所有候选关键字,计算(BC)+。(12分)(A)+=ABCDE,A是候选码E-A,E也是候选码。只要考虑BCD。B+=BDC+=CD+=D(BC)+=ABCDE(CD)+=CDEAB候选码:A,E,CD,BC五、设关系模式R(ABCD),在R上有两个相应的函数依赖集及分解:F={A→B,B→C,C→D},ρ={AB,ACD}回答下列问题(12分)1)确定R的码2)ρ是否无损分解;3)ρ是否保持函数依赖;4)确定ρ中每一模式的范式级别1)A是候选码A+=ABCD,2)R1∩R2-R1或者R1∩R2-R2要被F+所蕴含,也就是,要在F+中,那么就是无损分解。R1∩R2={A}A-AB或者A-ACD是否被F+所蕴含在F中,(A)+=ABCD,包含了AB,ACD,所以,这两个依赖都成立,都被F+所蕴含。因此是无损分解。-6-3)AB关系模式上,A-B依然成立ACD关系模式上,C-D存在。但是,B-C消失了。因为,没有BC在一起的分解。因此,丢失了B-C的依赖。不是保持依赖。5)问范式等级R1=AB,F={A-B},因此,依赖左边都是候选码,bcnfR2=ACDF={C-D,A-C}候选码是A,因此,依赖的左边不都是是码,所以不是bcnfA-C,C-D,C和D是非主属性,因此存在传递依赖,2nf.根据依赖,不存咋部分函数依赖,所以是2nf.六、SQL(16分)。学生–课程数据库:学生表:由学号、姓名、性别、年龄、系科五个属性组成,关系模式为:S(Sno,Sname,Ssex,Sage,Sdept).其中Sno为主键。课程表:由课程号、课程名、先修课程号、学时、学分五个属性组成,关系模式为:C(Cno,Cname,Cpno,Ctime,Ccredit),其中Cno为主键。选修表:有学号、课程号、成绩三个属性组成,关系模式为:SC(Sno,Cno,Grade),其中(Sno,Cno)为主键,Sno是外键,Cno是外键。(1)试用SQL语句创建SC表,同时定义其中的主键和外键。Createtablesc()(2)试用SQL的查询语句完成下面的查询:1)查询7号课程没有考试成绩的学生学号Selectsnofromscwherecno=‘7’andgradeisnull2)查询课程名以“数据”两个字开头的所有课程的课程号和课程名。Selectcno,cnamefromcwherecnamelike‘数据%’3)检索至少选修了两门课程的学生的学号Selectxhfrom(Selectxh,count(*)FromscGroupbyxh-7-Havingcount(*)=2)SelectxhFromscGroupbyxhHavingcount(*)=24)检索全部学生都选修的课程的课程号与课程名AcontainB==notexists(BexceptA)给定一个学生S1,学的课程就是ASelectcnofromscwherexh=‘s1’B是系统中所有课程。SelectcnofromcNotexists(SelectcnofromcexceptSelectcnofromscwheresno=‘s1’)Select*fromsWhereNotexists(SelectcnofromcexceptSelectcnofromscwheresno=s.sno)5)找出各个系科男女学生的平均年龄和人数。Selectsdept,ssex,avg(sage),count(*)FromsGroupbysdept,ssex6)把DATABASE课程不及格的成绩全改为60分Updatescsetgrade=60wherecnoin(selectcnofromcwherecname=‘DATABASE’)-8-Andgrade607)找出计算机系(JSJ)课程平均分最高的学生学号和姓名。找到所有计算机系学生的成绩Select*fromscwhereexists(select*fromswheresc.sno=s.snoands.sdept=‘JSJ’)Select*fromscwheresnoin(selectsnofromswheresdept=‘JSJ’)找到所有学生的成绩平均分,并且排序Selectxh,avg(grade)FromscWheresnoin(selectsnofromswheresdept=‘JSJ’)Orderbyavg(grade)desc找到所有学生的成绩平均分,并且排序,不能用top来做,因为可能并列Selectsno,snamefromswheresnoin(SelectsnoFromscWheresnoin(selectsnofromswheresdept=‘JSJ’)Havingavg(grade)=(selecttop1avg(grade)FromscWhereWheresnoin(selectsnofromswheresdept=‘JSJ’)))Withjsj_xsas(Selectsnoxh,avg(grade)avg_gradeFromscWheresnoin(selectsnofromswheresdept=‘JSJ’)-9-)Selectsno,snamefromswheresnoin(Selectxhfromjsj_xswhereavg_grade=all(selectavg_gradefromjsj_xs))