1、数据库复习专升本一、题型及分值1、填空题(10小题,10分)2、选择题(10小题,20分)3、问答与分析题(4小题,30分)4、综合题(2小题,40分)二、知识要点(一)关系模型的基本概念【例1】学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的联系类型是_。【例2】层次模型不能直接表示( )。A1:1联系 B1:n联系Cm:n联系 D1:1和1:n联系【例3】在三大传统的数据模型中,具有严格的数学理论基础的是_模型。【例4】数据库的数据独立性包括逻辑独立性和_。(二)关系代数运算【例1】五种基本关系代数运算是( A )。A,和 B,和C,和 D,和【例2】在关系代数
2、中,除法运算由基本运算符( C )组成。A、,和 B、,和C、,和 D、,和【例3】设关系R和S,RS的运算等价于( B )。AS-(R-S) BR-(R-S) C(R-S)S DR(R-S)【例4】在关系代数中,连接运算由基本运算符( C )组成。A、,和 B、和C、和 D、,和【例5】设关系R和S的属性个数分别为r和s,则(RS)操作结果的属性个数为_,元组个数为_。【例6】设有如下关系: 关系代数表达式RS的运算结果是_。【例7】已知有如下三个关系STUDENT(学号,姓名,性别,年龄,专业)GRADE (学号,课程号,成绩)COURSE(课程号,课程名,学分,课时)现有如下表达式:学号
3、,姓名(STUDENT)(学号,课程号(GRADE) 课程号 (COURSE)。请用汉语句子写出该表达式表达的查询,并写出与该表达式对应的SQL语句。答:(1)选修了全部课程的学生的学号和姓名。(2)select sno,sname From student Where not exists (select * From courseWhere not exists(select *From scWhere sno = student.sno and cno=o)(三)数据库的完整性1、关系的三类完整性约束。2、触发器。【例1】关系模式的三类完整性约束条件分别是_、参照完整性约束和用户定义完整
4、性约束。【例2】在SQL Server中,在视图上可以定义_类型的触发器。【例3】试举例说明在视图上创建instead of 触发器能够使得视图具备可更新功能。答:如果一个视图涉及到计算列,那么该视图为不可更新视图。/*创建books表*/ create table books (bookKey int identity(1,1),bookName nvarchar(10) not null,Color nvarchar(10) not null,ComputedCol as (bookName + Color),Pages int)/*在books表上创建视图,包含基表中所有列*/ crea
5、te view uv_booksas select bookKey,bookName,Color,ComputedCol,Pagesfrom books视图uv_books包含计算列,为不可更新视图。/*在视图uv_books上创建instead of 触发器*/ create trigger tr_uv_bookson uv_booksinstead of insertasbegininsert into booksselect bookName,Color,Pages from insertedend/*往视图uv_books上插入一行代码,完成对基表的插入*/ insert into u
6、v_books(bookKey,bookName,Color,ComputedCol,Pages)values(4,数据库原理,黄色,白色,200)从而验证了视图uv_books为可更新视图。【例4】已知S(sno,sname,ssex,sdept,sage),SC(sno,sname,cno,grade)。请编写一个触发器,当S表中的sname字段值发生变化时,SC对应的sname字段值也相应改变。create trigger trgInS on S after updateasbegin if update(sname) begin update SC set sname = (selec
7、t sname from inserted) where sno = (select sno from inserted ) endend(四)SQL语句1、数据查询及更新2、索引3、视图4、存储过程、游标【例1】有职工表EMP和部门表DEPT如图所示,其中有下划线的属性为主键,有波浪线的属性为外键。下面操作不能正确执行的是( )A检索部门号为“D05”的职工号B将EMP表中职工“李路”的部门号改为空值C删除职工“崔浩”的记录D在EMP表中插入记录(“E18”,“D05”,“王莹”)部门号 部门名 D01 研发部 D02 市场部 D03 人事部 D04 财务部 EMP DEPT职工号 部门号
8、职工名E01 D03 李路E25 D01 武明E19 D04 崔浩E32 D01 李颖【例2】 已知两个关系如下:RABC1b1c12b2c23b1c1SDEAd1e11d2e21d3e12假设R的主键是A,S的主键是D,在关系S的定义中包含外键子句:“FOREIGNKEY(A)REFERENCESR(A) ”,下列SQL语句不能成功执行的是()ADELETEFROMRWHEREA2BDELETEFROMRWHEREA3CDELETEFROMSWHEREA1DDELETEFROMSWHEREA2【例3】什么是存储过程?存储过程有哪些优点?答:存储过程是用户完成某项特定任务的一组预编译好的SQL
9、语句。 优点:(1)模块化编程;(2)快速执行;(3)减少网络通信量。(4)预防SQL语句的注入攻击。【例4】什么是物化视图?试分析物化视图与普通视图的区别。答:物化视图指的是存放SQL语句对应查询结果的视图。区别:(1)普通视图只存放视图的定义,物化视图存放的是实际的查询数据; (2)使用物化视图的查询效率高于普通视图; (3)物化视图需要占用较大的存储空间; (4)当基表中的数据发生变化时,需要刷新物化视图。 【例5】一个SQL语句原则上可产生或处理一组记录,而主语句一次只能处理一个记录,为此必须协调两种处理方式,这是通过使用_游标_机制来解决的。(五)关系数据理论 1、函数依赖、完全函数
10、依赖、部分函数依赖、传递函数依赖 2、三大范式 3、反范式设计【例1】在关系数据库中,从关系规范化的意义看,如果关系R中的非主属性对码有传递函数依赖,那么R最高是_范式。【例2】设有关系模式R(A,B,C,D),其上的函数依赖集合FBA,BCD,则R最高是_范式。【例3】在关系模式:选课(学号,课程号,考试次数,成绩)中,假设一个学生可以参加多门课程的多次考试。该关系模式的码是_。【例4】关系数据库的规范化理论主要解决的问题是( )。A、如何构造合适的数据逻辑结构B、如何构造合适的数据物理结构C、如何构造合适的应用程序界面D、如何控制不同用户的数据操作权限【例5】一个只满足1NF的关系模式,可
11、能存在哪些方面的问题?答:数据冗余、插入异常、删除异常和修改异常。【例6】关系模式R(球员编号,篮球比赛场次,进球数,球队名,队长)用来表示我校举行的各系篮球比赛。规定每个球队只有一名队长。(1)试说明R不是2NF的理由,并将R分解为2NF的模式集。答:关系R的码是(球员编号,篮球比赛场次)。该关系的函数依赖集如下:(球员编号,篮球比赛场次) 进球数,球员编号球队名,球队名队长即存在非主属性“球员编号”、“队长”对码的部分函数依赖,因此R不是2NF。将R分解为2NF后的结果如下: R1:(球员编号,篮球比赛场次,进球数) R2:(球员编号,球队名,队长)(2)将R分解为3NF模式集。答:R1:
12、(球员编号,篮球比赛场次,进球数) R2:(球员编号,球队名) R3:(球队名,队长)【例7】就下图给出的关系R,回答问题:RSNOCNOCTITLESNAMESLOCAGRADE80152C1OS王平D17080153C2DB高升D28580154C1OS王平D18680154C3AI杨洋D37280155C4CL高升D292(1) 关系R为几范式?为什么?(2) 是否存在删除操作异常?若存在,则说明是在什么样情况下发生的?(3) 将它分解成高一级范式,分解后的关系是如何解决分解前可能存在的删除异常问题的?【例8】已知点评网的后台数据库中存在以下两个关系:帖子表(帖子ID,帖子标题,会员ID
13、),会员表(会员ID,会员昵称,会员等级)。请回答以下问题:已知“帖子ID”为自增列字段,请写出查询最新的10个帖子的标题以及会员昵称的查询语句。答:SELECT TOP 10 N.帖子标题, U.会员昵称,N.会员ID FROM 帖子表 N INNER JOIN 会员表 UON N.会员ID=U.会员IDORDER BY N.帖子ID DESC为了提高第一小题的SQL语句的查询速度,您会如何重新设计数据库表?并说明原因。答:当帖子表和会员表中涉及到大量记录时,上述的查询难以满足用户对于网页速度的要求。为了提高查询速度,考虑“反范式设计”,即在帖子表里面添加冗余字段“会员昵称”,这样就可以通过
14、下面的语句达到同样的查询目的: SELECT TOP 10 帖子标题, 会员昵称,会员ID FROM 帖子表 ORDER BY 帖子ID DESC【例9】请简述范式对查询的影响。答:对查询的利:(1)减少数据冗余,数据更为紧凑; (2)表的行数少,排序、索引更为迅速; (3)由于多表,多个聚集索引成为可能。 对查询的弊: 使得查询数据分离在多张表中,增加了查询的复杂性。 (六)数据库设计【例1】概念结构设计阶段得到的结果是( )。 A 数据字典描述的数据需求 B. E-R图表示的概念模型 C. 某个DBMS所支持的数据模型 D. 包括存储结构和存取方法的物理结构【例2】单个用户使用的数据视图的
15、描述称为( )A. 外模式 B. 概念模式C. 内模式 D. 存储模式 【例3】在合并分E-R时,需完成消除命名冲突的工作。使用_视图_机制可以重新定义某些属性名,使其与用户习惯一致。【例4】试举例说明存储过程能够在一定程度上预防SQL语句的注入攻击问题。答:假设数据库中有一个关系student(sno,sname,sage,ssex)。在连接数据库后,使用字符串拼接的方式查询指定学号的学生信息,其中txtSno.Text代表用户往文本框中输入的学号。String sqlStr = “select * from student where sno = ” + txtSno.Text.Trim(
16、) + “”;如果用户往文本框中输入字符串: or 1 = 1该语句将成为select * from student where sno = or 1=1即执行结果为student表中的全部记录。而如果在student表上创建如下存储过程Pr_Student,其中sno为接受用户输入的学号信息。Create procedure Pr_Studentsno char(5)AsSelect * from student sno = sno 然后在应用程序中使用如下语句调用存储过程。 SqlCommand command = new SqlCommand(Pr_Student, sqlCon); c
17、ommand.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue(sno,sno);当用户输入字符串 or 1 = 1,将在数据库中查找sno为 or 1 = 1的学生信息,输出结果将为空。通过上例说明了使用存储过程能够预防SQL语句的注入攻击。(七)事务和数据库恢复【例1】事务的ACID特性指的是什么?【例2】对于事务故障的恢复,恢复子系统将结合日志文件撤销事务,具体做法是:_向扫描日志文件,对事务中的每个操作执行逆向操作。【例3】请分析故障子系统对于下图所示的事务所采取的恢复策略。答:T1为检
18、查点之前已经提交的事务,因此不执行任何操作。T2和T4为在检查点后故障点前提交的事务,它们对数据库所做的修改在故障发生时还可能在缓冲区中,尚未写入数据库,因此进行REDO操作。T3和T5在故障发生时还未完成,因此予以撤销。【例4】 你所在的企业的数据库中拥有一套完整的备份策略:每周日晚上执行完整备份,每天晚上执行差异备份,每天12点、14点、16点执行事务日志备份。 某个周三的下午13点,用户报告说不能访问数据库。作为DBA,你检查时发现数据库发生了严重的故障,存储数据库的硬盘无法正确工作。这时,你会如何处理?答:为服务器更换新的硬盘,使用存储在另外一个盘上的备份文件进行故障恢复。先使用上周日
19、晚的完整备份文件进行还原;再使用周二晚上的差异备份文件进行还原;最后使用当天中午12点的事物日志备份进行还原。(八)综合题1、设某商业集团数据库中有三个实体集:“商店”实体集,其中的属性有商店编号、商店名、地址等;“商品”实体集,其中的属性有商品号、商品名、规格、单价等;“职工”实体集,其中的属性有职工编号、姓名、性别、业绩等。商店与商品之间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品,有月销售量;商店与职工之间存在着“聘用” 联系,每个商店的职工人数应该在20100人之间,每个职工只能在一个商店工作,商店聘用职工有聘用期和月薪。试画出E-R图;
20、答:(2)将E-R图转换成关系模型。答:商店(商店编号,商店名,地址)职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪)商品(商品号,商品名,规格,单价)销售(商店编号,商品号,月销售量)2、设有学生运动会模型,语义如下:(1)有若干班级,每个班级包括:班级号,班级名,专业,人数; (2)每个班级有若干运动员,运动员只能属于一个班,运动员信息包括:运动员号,姓名,性别,年龄;(3)有若干比赛项目,包括:项目号,名称,比赛地点; (4)每名运动员可参加多项比赛,每个项目可有多人参加; (5)要求能够公布每个比赛项目的运动员名次与成绩;(6)要求能够公布各个班级团体总分的名次和成绩。解题要求
21、: 画出每个实体及其属性关系、实体间实体联系的E-R图。答:2)根据试题中的处理要求:把E-R图转化为关系数据逻辑模型,包括各个表的名称和属性,并指出每个表的主键和外键。答:关系模式如下:a) 班级(班级号,班级名,专业,人数) 主键:班级号 b) 运动员(运动员号,姓名,性别,年龄,班级号) 主键:运动员号 外键: 班级号 c) 项目(项目号,项目名,比赛地点) 主键:项目号d) 比赛(运动员号,项目号,成绩,名次,得分)主键:运动员号,项目号 外键: 运动员号;项目号3)试用关系代数描述:检索出参加“跳高”比赛项目的运动员姓名。答:姓名(项目名=跳高(运动员比赛项目)4)为“比赛”表中的“
22、成绩”字段添加完整性规则:成绩的值只能在0-100的范围内。答:alter table 比赛 add constraint CK_grade check(成绩=0 and 成绩=18 and 年龄=22 的查询速度,你会如何创建索引?请写出创建索引的语句。答:create index 年龄_姓名 on 运动员(年龄,姓名)8)试用SQL命令描述:检索出姓名中含有“敏”字的学生姓名及其所参加比赛项目的名称。答: select 姓名,项目名from 运动员,比赛,项目where 姓名 like “%敏%” and 运动员.运动员号=比赛.运动员号and 项目.项目号=比赛.项目号9)试用SQL命令
23、描述:检索出“跳远”比赛中的成绩排在前三名的运动员姓名。答: select top 3姓名from 运动员,比赛,项目where 项目名=“跳远” and 运动员.运动员号=比赛.运动员号and 项目.项目号=比赛.项目号 orderby成绩 desc10)试用SQL命令描述:统计每个项目的参赛人数、最高成绩、最低成绩,显示列为项目名称、参赛人数、最高成绩、最低成绩。答: select 项目名,count(*) 参赛人数,max(成绩) 最高成绩,min(成绩) 最低成绩from 比赛,项目where 项目.项目号=比赛.项目号 group by项目.项目号,项目名11)试用SQL命令建立名为“项目清单”的视图,视图的列包括:项目名称、运动员号、比赛地点。答: create view 项目清单(项目名称,运动员号,比赛地点)asselect 项目名, 运动员号,比赛地点from 比赛,项目where 项目.项目号=比赛.项目号12)试创建一个带输出参数的存储过程pr_xh。根据输入的运动员的“姓名”,获得指定姓名的运动员的比赛成绩。create procedure pr_xh姓名 char(5),成绩 tinyint outputasbegin select 成绩=比赛.成绩 from 运动员,比赛 where运动员.运动员号=比赛.运动员号 and 运动员.姓名=姓名end
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1