《数据库原理与应用》考试试卷和答案一.单项选择题(每题1分,共23分)1.目前市场上常见的DBMS90%以上都是基于(C)数据模型的。A.层次B.网状C.关系D.面向对象2.E-R图是在数据库设计中用来表示(A)的一种常用方法。A.概念模型B.逻辑模型C.物理模型D.面向对象模型3.(C)是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。A.外模式B.内模式C.模式D.概念模式4.(B)也称存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。A.外模式B.内模式C.模式D.概念模式5.数据库的概念模型独立于(A)。A.具体的机器和DBMSB.E-R图C.信息世界D.现实世界6.在数据库中存储的是(C)。A.数据B.数据库模型C.数据以及数据之间的联系D.信息7.规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:其每一个属性都是(B)。A.互不相关的B.不可分解的C.长度可变得D.互相关联的8.在数据模型中有“型”和“值(或实例)”两个对应的概念。其中数据库的模式是一个(D)的概念,是一个相对()的概念,而数据库在某一时刻的状态则是一个()的概念,是一个相对()的概念。A.型;变化;值;不变B.值;不变;型;变化C.值;变化;型;不变D.型;不变;值;变化9.关系表A的属性个数为5,元组个数为10;关系表B的属性个数为6,元组个数为20.则A与B的笛卡尔积A×B的属性有(D)个,元组个数有()个。A.30;200B.11;30C.30;30D.11;20010.父亲和子女的亲生关系属于(B)的关系。A.1:1B.1:nC.m:nD.不一定11.在SQL语言中,删除关系表中的一个属性列,要用动词(D),删除关系表中的一行或多行元组,要用动词()。A.delete,deleteB.drop,dropC.delete,dropD.drop,delete12.在SQL语言中,为关系模式增加一个属性要用动词(B),为关系表增加一行或多行元组要用动词()。A.insert,insertB.add,insertC.insert,addD.add,add13.实体完整性约束和SQL语言中的(A)相对应。A.primarykeyB.foreignkeyC.checkD.都不是14.参照完整性约束和SQL语言中的(B)相对应。A.primarykeyB.foreignkeyC.checkD.都不是15.物理数据独立性是指()。A.概念模式改变,外模式和应用程序不变B.概念模式改变,内模式不变C.内模式改变,概念模式不变D.内模式改变,外模式和应用不变16.SQL语言中的select子句和关系代数中的运算符(A)相对应,SQL语言中的where子句和关系代数中的运算符()相对应。A.∏,○B.÷,∞C.○,∏D.∏,÷17.在SQL语言中,(C)可能使得数据库中元组的排列顺序发生改变。A.添加一个元组B.修改一个元组C.建立一个聚簇索引D.建立一个check约束18.在我们的学生-课程数据库中,SC表上建立了两个外码约束,被参照表是Student表和Course表,则最适当的说法是:A.Student表中的学生号Sno不能随意取值B.Course表中的课程号Cno不能随意取值C.SC表中学生号Sno不能随便D.SC表中学生号Sno、课程号Cno均不能随意取值19.如果在学生-课程数据库中的SC表上建立了参照完整性约束:ForeignKey(Sno)ReferencesStudent(Sno),ForeignKey(Cno)ReferencesCourse(Cno),则(D)操作可能会违背该完整性约束。A.在Student表上增加一行记录B.在Course表上增加一行记录C.在SC表上删除一行记录D.更新SC表上的记录20.(C)的视图是可以完全更新的。A.一个由两个以上的表导出的视图B.视图的定义中含有集函数C.仅由一个表的行列子集构成的D.视图的定义中含有ORDERBY子句21.关于视图,不正确的说法是(C)。第2页/共4页2A.查询一个视图和查询一个基本表没有什么两样B.视图中并不存放数据C.若一个视图view_1由基本表t1和t2导出。删除t1不会对视图view_1有影响D.更新视图中的数据,本质上更新的是导出该视图的基本表中的数据22.关系R(X,Y,Z),函数依赖集FD={Y→Z,XZ→Y},则关系R是(C)。A.1NFB.2NFC.3NFD.BCNF23.若一个关系模式RU,F中,属性集合U的任何一个真子集的值给定以后都不能完全确定一行元组,则称该关系模式为(全码)。A.主码B.完全函数依赖C.全码D.候选码二.填空题(每空1分,共17分):1.从历史发展看来,数据管理技术经历了人工管理、文件管理和数据库管理三个阶段。2.在SQL语言中,用符号—代表单个字符,用符号%代表0到多个字符。3.在SQL语言中,为了使查询的结果表中不包含完全相同的两个元组,应在select的后面加上关键词distinct。4.在SQL语言中,为了使被授权的用户可以将该权限(或该权限的一部分)再进一步授予其他用户,应在授权的SQL语句末尾加上关键词withgrantoption。5.在建立视图的时候,为了避免使用该视图的用户有意或无意修改了视图范围之外的数据,应在建立视图的语句末尾加上关键词withcheckoption。6.在数据库设计中,若关系模式设计得范式太低,可能会使得数据库存在数据冗余、修改复杂、插入异常和删除异常四个方面的弊端。采取的解决方法就是对该关系模式进行分解(或规范化)。7.根据关系理论,对一个关系模式的最起码的要求是满足一范式。8.如果一个关系模式中不存在非主属性对码(或候选码)的部分函数依赖,则该关系模式就达到了二范式。9.若关系模式R(U)达到了BC范式,则在R中一定消除了非主属性对码的部分函数依赖和传递函数依赖。三.判断题:(每小题1分,共10分)1.SQLServer2000,Access,Oracle等DBMS,都是面向对象的数据库管理系统。(×)2.在关系数据模型中,只有一种结构——关系。不论是实体还是实体之间的联系都是用关系来表达的。(∨)3.一个数据库只能对应一个应用程序,即一个数据库只能为一个应用程序所用。(×)4.SQL语言是SQLServer数据库管理系统的专用语言,其它的数据库如Oracle、Sybase等都不支持这种语言。(×)5.对于一个基本关系表来说,列的顺序无所谓——即改变属性的排列顺序不会改变该关系的本质结构。(∨)6.对于一个基本关系表来说,行的顺序无所谓——即将一条记录插入在第一行和插入在第五行没有本质上的不同。(∨)7.在一个关系表上最多只能建立一个聚簇索引。(∨)8.若.一个数据库管理系统提供了强制存取控制机制(MAC),则它一定也会提供自主存取控制机制。(∨)9.在开发一个数据库应用系统的时候,无论什么时候,都是设计的数据库范式越高越好。(×)10.一个全码的关系模式,其范式一定达到了三范式。(∨)四.关系代数和SQL语言(每小题2分,共32分):给定一个学生-课程数据库,其中包括学生基本信息表Student(Sno,Sname,Sdept,Ssex,Sage)、课程表Course(Cno,Cname,Cpno,Ccredit)和学生选课表SC(Sno,Cno,Grade),其含义和数据类型如教材中所示,不再赘述。1.用关系代数表达下列查询:(1)查询学号为090206120的学生的姓名、性别和所属系别。∏Sname,Ssex,Sdept(○Sno=‘090206120’(Student))(2)查询选修了课程号为C02课程的学生的学号、姓名、性别、成绩。∏Sno,Sname,Ssex,Grade(○Cno=‘C02’(Student∞SC))(3)查询选修了学号为090206301的学生选修的全部课程的学生学号、姓名。∏Sno,Sname,Cno(Student∞SC)÷∏Cno(○Sno=‘090206301’(SC))2.用SQL语言完成下面要求的功能:(1)查询计算机系(CS)全体学生的基本信息。Select*FromStudentWhereSdept=’CS’(2)查询C02号课程不及格的学生的学号、考试成绩。SelectSno,GradeFromSCWhereCno=’C02’AndGrade60(3)查询选修了数据库原理这门课的学生的学号、姓名、性别、课程号、学分、成绩。查询结果按照成绩降序排列。第3页/共4页3SelectStudent..Sno,Sname,Ssex,,SC.Cno,Ccredit,GradeFromStudent,SC,CourseWhereStudent.Sno=SC.SnoAndSC.Cno=Course.CnoAndCname=’数据库原理’(4)查询课程号为C02的课程的选课人数和平均考试分数。为了使得结果更清晰易懂,请在查询结果表中分别给这两列查询结果起别名“选课人数”和“平均分数”。SelectCount(Sno)选课人数,AVG(Grade)平均分数FromSCWhereCno=‘C02’(5)查询每个学生的学号及其对应的选课门数。SelectSno,Count(Cno)FromSCGroupBySno(6)查询平均考试成绩高于85分的学生的学号、姓名、平均成绩,并将查询结果按照学号升序排列。SelectStudent.Sno,Sname,AVG(Grade)FromStudent,SCWhereStudent.Sno=SC.SnoGroupByStudent.Sno,SnameHavingAVG(Grade)85OrderByStudent.Sno(7)已知学号由7位字符构成,其中的前5位代表班号,后2位代表学生在本班的学号。请将12345班学生C02号课程的考试成绩增加10%。UpdateSCSetGrade=Grade*(1+0.1)WhereSnoLike‘12345%’AndCno=’C02’(8)建立SC(Sno,Cno,Grade)表。要求学号Sno由7位字符构成,课程号Cno由5位字符构成,成绩Grade由0-100之间(包括0和100)的整数构成。将(Sno,Cno)设为主码,并建立参照完整性约束,使得Sno和Cno分别参照Student和Course的相应属性取值。CreateTableSC(SnoChar(7),CnoChar(5),GradeintCheck(GradeBetween0and100),PrimaryKey(Sno,Cno),ForeignKey(Sno)ReferencesStudent(Sno).,ForeignKey(Cno)ReferencesCourse(Cno))(9)建立一个只包含计算机系(CS)全体女生基本信息的视图;并进一步将查询该视图的权限赋给宿舍管理员U1和U2.CreateViewCS_GirlASSelect*FromStudentWhereSdept=’CS’AndSsex=’女’GrantSelectOnCS_GirlToU1,U2;(10)在Student表中插入这样一条新生记录——学号:1234599,姓名:马小立,年龄20岁系别:IS。InsertIntoStudent(Sno,Sname,Sage,Sdept)Values(‘1234599’,‘马小立’,20,‘IS’)(11)在Student表中注册的12345班全体学生都要选修学号为C10的课程。请将这一选课信息插入到SC(Sno,Cno,Grade)表中。InsertIntoSC(Sno,Cno)SelectSno,‘C10’第4页/共4页4FromStudentWhereSnoLike‘12345%’(12)学号为1234510的学生已经退学。请将Student表中该学生的基本信息删除。DeleteFromStud