全国计算机等级考试四级笔试样卷数据库工程师
2009-03-03来源:教育部考试中心

  一、选择题((1)~(20)每题1分,(21)~(30)每题2分,共40分)

  下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

  (1)在数据库应用系统生命周期模型中,规划与分析阶段的输出结果不包括

  A)需求规范说明书       B)系统范围与边界

  C)可行性分析报告       D)项目计划书

  (2)在信息系统的需求分析中,广为使用的DFD建模方法属于

  A)结构化分析方法       B)数据分析方法

  C)数据抽象方法     D)业务归纳方法

  (3)不允许出现在最终IDEF1X图中的是

  A)标定型联系       B)非标定型联系

  C)分类联系     D)多对多联系

  (4)下列哪些属性不适合建立索引?

  A)经常出现在GROUP BY子句中的属性

  B)经常参与连接操作的属性

  C)经常出现在WHERE子句中的属性

  D)经常需要进行更新操作的属性

  (5)在数据库应用系统生命周期模型中,作为系统总体设计阶段输入的是

  A)技术可行性分析报告和需求规范说明书

  B)软硬件选型和配置设计

  C)数据库应用系统体系结构设计

  D)应用软件总体设计

  (6)SQL Server 2000中,如果希望用户u1在DB1数据库中具有查询T1表的权限,正确的授权语句是

  A)GRANT SELECT ON DB1(T1) TO u1

  B)GRANT SELECT TO u1 ON DB1( T1)

  C)GRANT SELECT TO u1 ON T1

  D)GRANT SELECT ON T1 TO u1

  (7)SQL Server 2000提供了很多预定义的角色,下述关于public角色说法正确的是

  A)它是系统提供的服务器级的角色,管理员可以在其中添加和删除成员

  B)它是系统提供的数据库级的角色,管理员可以在其中添加和删除成员

  C)它是系统提供的服务器级的角色,管理员可以对其进行授权

  D)它是系统提供的数据库级的角色,管理员可以对其进行授权

  (8)关于ADO对象模型中的RecordSet,下述说法正确的是

  A)它用于定义连接的数据库名

  B)它用于定义数据的来源

  C)它是一个对象,用于在客户端内存中存放数据查询的结果

  D)它是一个对象,用于在服务器端内存中存放数据查询的结果

  (9)关于ADO对象模型,下述说法正确的是

  A)它是与OLE DB同层的独立的接口集

  B)它是与ODBC同层的独立的接口集

  C)它是建立在OLE DB接口之上的高层接口集

  D)OLE DB是建立在ADO对象模型之上的高层接口集

  (10)关于UML的静态建模机制,下述说法错误的是

  A)用例模型是将满足用户需求的所有功能表示出来的工具

  B)用例图用于表示系统的数据模型和功能模型

  C)类图展现了一组类、接口和协作以及它们之间的关系

  D)组件图表示系统的静态实现视图,用于对源代码、可执行程序和物理数据库等进行建模

  (11)关于分布式数据库的分布策略,下述说法正确的是

  A)数据分配是对关系的操作,数据分片是对数据分配的操作

  B)集中式数据分配策略不便于进行数据控制

  C)全复制式数据分配策略可靠性高,响应速度快,但数据冗余大,同步维护复杂

  D)分割式数据分配策略对全局数据控制灵活,但对局部数据存取效率低

  (12)关于并行数据划分策略,下述说法错误的是

  A)散列划分采用某种散列函数,以数据的划分属性作为函数参数,计算数据应存储的磁盘序号

  B)范围划分根据某个属性的取值,将数据划分为n个部分,分别存储到不同磁盘上

  C)范围划分有利于范围查询和点查询,但也可能会引起数据分布不均匀及并行处理能力下降等问题

  D)轮转法划分能保证元组在多个磁盘上的平均分配,并具有较高的点查询和范围查询效率

  (13)将新插入的记录存储在文件末尾,并使记录随机地分布在文件物理存储空间中的文件结构是

  A)堆文件   B)聚集文件 C)索引文件 D)散列文件

  (14)有一个事务T要更新数据库中某表列的值,DBMS在执行T时发现更新后的值超出了该列的值定义范围,因此异常终止了T。为了保证数据的正确性及一致性,DBMS会执行下列哪个恢复操作?

  A)undo B)介质恢复 C)进程恢复 D)redo

  (15)关于数据库系统中数据的静态转储和动态转储机制,下述说法正确的是

  A)静态转储时允许其他事务访问数据库

  B)动态转储时允许在转储过程中其他事务对数据进行存取和修改

  C)静态转储能够保证数据库的可用性

  D)动态转储无法保证数据库的可用性

  (16)在数据库系统中,下列哪个映像关系用于提供数据与应用程序间的逻辑独立性?

  A)外模式/模式  B)模式/内模式  C)外模式/内模式    D)逻辑模式/内模式

  (17)在SQL Server 2000中,事务日志备份

  A)对故障还原模型没有要求       B)要求故障还原模型必须是完全的

  C)要求故障还原模型必须是简单的 D)要求故障还原模型不能是简单的

  (18)关于数据库的试运行和功能与性能测试,下列说法正确的是

  A)对数据库系统的转储和恢复能力的测试属于系统的功能测试范畴

  B)在进行数据库功能测试时,一般要先装入大规模的数据

  C)数据库试运行一般是与编写调试程序的工作同步开展的

  D)数据库系统的压力测试、并发访问测试、查询效率测试一般属于性能测试范畴

  (19)关于数据仓库设计,下述说法正确的是

  A)数据仓库项目的需求很难把握,所以不可能从用户的需求出发来进行数据仓库的设计,只能从数据出发进行设计

  B)在进行数据仓库主题数据模型设计时,应该按面向部门业务应用的方式来设计数据模型

  C)在进行数据仓库主题数据模型设计时要强调数据的集成性

  D)在进行数据仓库概念模型设计时,需要设计实体关系图,给出数据表的划分,并给出每个属性的定义域

  (20)关于分布式数据库系统,下述说法正确的是

  A)查询代价主要考虑CPU代价和I/O代价

  B)分布透明性是指用户需要并能完全看清数据分片的位置、分片的分配位置以及数据复制的过程

  C)分布式查询优化一般不需要考虑操作的执行顺序和数据在不同场地间的传输顺序

  D)执行分布式数据库查询时,导致数据传输量大的主要原因是数据间的连接操作和并操作

  (21)已知下列员工关系表Employees

员工号 部门 工资
4501 财务 3000
5601 市场 4000
3020 研发 3500

  对该表的工资属性的完整性约束为:2000≤工资≤5000

员工号 部门 工资
4501 财务 3000
5601 市场 4000
3020 研发 3500
3650 研发 4600

  现将如下2个操作组织为事务T,操作1先执行,操作2后执行。

  操作1: INSERT INTO Employees VALUES('03650', '研发', '4600')

  操作2: UPDATE Employees SET 工资 = 工资 * 1.2

  WHERE  部门 = '市场' OR 部门 = '研发'

  事务T执行完毕后,关系表Employees的数据是

  A)     B)

员工号 部门 工资
4501 财务 3000
5601 市场 4800
3020 研发 3500

  C)     D)

  (22)有会员卡表TableCards(CardID, StartDate, Score),CardID表示卡标识,Score为卡积分。有视图:

  CREATE VIEW vCard AS

  SELECT * FROM TableCards WHERE Score BETWEEN 200 AND 500

  WITH CHECK OPTION

  假设('C0001', '2008/5/6', 220)是TableCards表中的一个元组,下述说法正确的是

  A)若要查询积分在200到300之间的所有卡标识,通过视图vCARD查询会比直接在TableCards上查询的效率要高

  B)数据库系统会分配存储空间实际保存视图vCard所对应的数据

  C)语句UPDATE vCard SET Score = 260 WHERE CardID = 'C0001' 能成功执行

  D)语句INSERT INTO vCard VALUES('C0010', '2008/4/5', 1000) 能成功执行

  (23)现有一SQL Server 2000数据库服务器,其中的一个数据库占用80GB空间。另有一台用于备份的计算机,该机上有四个大小均为60GB的硬盘分区。若要将此数据库完全备份到该计算机上,则

  A)不能实现,因为每个分区上的空间都不够80GB

  B)可以先建立一个备份设备,这个备份设备分别在四个分区上各占用20GB空间,然后再用此设备备份数据库

  C)可以先在每个分区上分别建立一个备份设备,指定每个设备的大小均为20GB,并建立一个包含这四个备份设备的备份媒体集,最后再用此备份媒体集备份数据库

  D)可以先在每个分区上分别建立一个不用指定大小的备份设备,然后将数据库同时备份到这四个备份设备上

  (24)有一个具有10万行数据的关系表,每行占用3000字节空间,如果在SQL Server 2000管理的数据库中存放此关系表,则需要的空间大约是

  A)300MB    B)400MB    C)500MB    D)600MB

  (25)下面给出的关系表r(A, B, C, D)满足下述哪个函数依赖?  

A B C D
1 4 3 1
2 7 1 1
3 0 2 2
1 2 3 3

  A)A→B B)B→D C)D→C D)A→D

  (26)某供应商关系模式为:

  Providers(PID,PName, Tel, GoodsID, GoodsClassID, GoodsName, GoodsPrice)

  该关系模式满足如下函数依赖:

  PID→Pname,PID→Tel,GoodsID→GoodsClassID,

  GoodsID→GoodsName, GoodsName→GoodsPrice

  则这个关系模式的主码为

  A)(PID,GoodsName)    B)(PID,GoodsClassID)

  C)(PID,GoodsID) D)(PID,GoodsPrice)

  (27)给定如下数据:

  I. 商品销售数据  

商品标识 价格 数量 金额 销售时间
1 50 5 100 2008/1/1 2:30
2 3 2 6 2008/1/1 2:31
       

  II. 关系模式信息  

表名 属性名 类型 长度
商品表 商品标识 字符 10
商品表 商品名称 字符 50
       

  III. 商品类别数据  

商品类别标识 类别名称 商品大类标识
DA 电视 家电
DB 冰箱 家电
   

  IV. 权限信息

角色名/用户名 对象名 权限
R1 T1 SELECT
R2 T1 INSERT
   

  V. 层间数据映射关系

属性名 源系统 源数据表 源字段
GoodsID 销售系统 Goods GID
PID 人力资源系统 Persons PID
     

  以上数据中,一般不属于元数据的是

  A)I和III  B)I 、III和IV C)II和V   D)II、IV和V

  (28)有职工工资表(职工号,姓名,日期,基本工资,奖金,工资合计),其中“工资合计”等于同一行数据的“基本工资”与“奖金”之和。在职工工资表中插入一行数据时(设一次只插入一行数据)能实现自动计算“工资合计”列的值的代码是

  A)ALTER TABLE 职工工资表 ADD CHECK (工资合计 = 基本工资 + 奖金)

  B)UPDATE 职工工资表 SET 工资合计 = 基本工资 + 奖金

  C)INSERT INTO 职工工资表(工资合计) VALUES(基本工资 + 奖金)

  D)CREATE TRIGGER TRI ON 职工工资表 FOR INSERT AS

  UPDATE 职工工资表 SET a.工资合计 = a.基本工资 + a.奖金

  FROM 职工工资表 a JOIN INSERTED b ON a.职工号 = b.职工号

  AND a.日期 = b.日期

  (29)有教师表(教师号,姓名,职称,所在系)和授课表(教师号,课程号,授课学年,授课时数),同一门课程可由多个教师讲授,同一个教师也可讲授多门课程。查询从未被“教授”讲授过的课程的课程号,正确的语句是

  A)SELECT 课程号 FROM 授课表 a JOIN 教师表 b ON a.教师号 = b.教师号

  WHERE 职称 != '教授'

  B)SELECT 课程号 FROM 授课表 a RIGHT OUTTER JOIN 教师表 b

  ON a.教师号 = b.教师号

  WHERE 职称 != '教授' AND a.课程号 IS NOT NULL

  C)SELECT 课程号 FROM 授课表 WHERE 课程号 NOT IN(

  SELECT 课程号 FROM 授课表 a JOIN 教师表 b ON a.教师号 = b.教师号

  WHERE 职称 = '教授')

  D)SELECT 课程号 FROM 授课表 WHERE 课程号 IN(

  SELECT 课程号 FROM 授课表 a JOIN 教师表 b ON a.教师号 = b.教师号

  WHERE 职称 != '教授')

  (30)给定如下三个关系表:

  销售明细表(商品标识,销售时间,单价,数量,金额)

  日销售表(商品标识,销售日,总数量,总金额)

  月销售表(商品标识,销售月份,总数量,总金额)

  下述说法正确的是

  A)销售明细表的数据粒度最大,数据量最大

  B)日销售表的数据粒度最大,数据量最小

  C)月销售表的数据粒度最大,数据量最小

  D)月销售表的数据粒度最小,数据量最小 

  二、简答题(每题10分,共20分)

  请使用蓝、黑色钢笔或圆珠笔将答案写在答题纸的相应位置上,否则无效。

  (1)设有商场经营管理系统,系统中的部分数据表或视图的相关信息如下所示:

表或视图 访问频率 数据源
表T1(商品标识,时间,销售柜台,数量,单价,金额) 10000 次/天 原始数据
表T2(商品标识,时间,商店标识,总数量,总金额) 1000次/天 T1
表T3(商品标识,日,商店标识,总数量,总金额) 5000次/天 T2
表T4(商品标识,月份,商店标识,总数量,总金额) 100次/天 T3
视图V1(商品标识,季度,商店标识,总数量,总金额) 3000次/天 T3

  表中T4的数据源是T3表明T4中的数据是根据T3的数据汇总计算而来的,并假定各个表的数据都得到了及时计算。现需对系统进行优化,以提高与视图V1有关的查询效率。设有如下优化方案:

  I. 为视图V1建立索引

  II. 为T2建立主索引

  III. 为T3建立主索引

  IV. 重写视图V1,将其数据源调整为T4,并为T4建立主索引

  V. 重写视图V1,将数据源调整为T2,并为T2建立主索引

  请针对每一个优化方案,说明该优化方案对实现目标是否有效,并简要说明原因。(10分)

  (2)下图为关系表Students(专业,姓名,学号,年龄)在对应的数据文件中的物理存储结构示意图。

  专业       姓名     学号   年龄

 

电子 张家力 D-002 19  
计算机 苏永军 J-100 18  
自动化 邓秀娟 Z-058 23  
计算机 叶浩伟 J-206 21  

  ① 写出在“专业”属性上建立聚集索引的SQL语句,索引值按升序排序(索引名为ZY_ind)。(4分)

  ② 假设索引按稠密索引方式组织数据,画出在“专业”属性上建立聚集索引后该表对应的索引文件和数据文件的物理存储结构示意图(以“专业”为查找码,按查找码的汉语拼音字母升序排序)。(6分)

  三、设计与应用题(共40分)

  请使用蓝、黑色钢笔或圆珠笔将答案写在答题纸的相应位置上,否则无效。

  (1)有商品表(商品号,商品名,分类,单价),请编写一个实现更改商品单价的存储过程(存储过程名为pUpdate),更改规则如下:“电脑”类商品降价10%,“电视”类商品降价6%,“冰箱”类商品降价3%,其他类商品不降价。以商品的分类作为输入参数,假设“分类”为字符串类型,长度最多为6个汉字。如果商品表中没有用户指定的分类,则用输出参数返回字符串“指定的分类不存在”;如果用户指定的分类存在,则用输出参数返回字符串“修改已成功”。(10分)

  (2)现有某图书销售数据库,其关系表结构如下:

  图书表(图书编号,图书名称,出版社编号,出版社名称,出版时间,出版数量,版次)

  图书销售表(图书编号,销售日期,销售数量,书店编号,读者编号,读者姓名,读者电话)

  书店表(书店编号,联系电话,所在城市编号,城市名称)

  该系统所涉及的数据存在如下约束:

  I. 一个出版社可以出版多本图书,一本图书只能在一个出版社出版,在该系统中记录的图书出版信息包括出版时间、版次及出版数量信息;

  II. 一个书店可以出售多本图书给多个读者,每位读者可以从多个书店购买多本图书,一本图书可以通过多个书店出售给读者,书店把图书出售给读者后会在系统中记录售书日期和售书数量信息;

  III. 每个书店只能位于一个城市,一个城市可以有多个书店。

  ① 请根据以上信息画出合理的图书销售数据库的概念模型(用ER图表示)。(8分)

  ② 以图书销售表为例说明原数据库设计的不合理之处。(4分)

  ③ 给出该数据库符合3NF要求的全部关系模式,并指出关系模式中的全部主码和外码。(8分)

  (3)事务T1、T2和T3按如下调度方式并发地对数据项A、B、C进行访问,假设A、B、C的初值分别为A=20,B=30,C=40。

  ① 在事务T2刚完成提交后,数据库中A、B、C的值各是多少?(3分)

  ② 当事务T3结束后,给出该并发调度对应的日志文件,并说明此时A、B、C的值各是多少?(7分)

  

T1              T2             T3

begin-trans(T1)

read(A)

A := A +10

begin-trans(T2)

read(B)

write(A)

commit

begin-trans(T3)

read(C)

B:= B -10

write(B)

                 C := C*2

commit

write(C)

rollback