上半年数据库系统工程师考试下午真题及解析2.docx
《上半年数据库系统工程师考试下午真题及解析2.docx》由会员分享,可在线阅读,更多相关《上半年数据库系统工程师考试下午真题及解析2.docx(9页珍藏版)》请在冰豆网上搜索。
上半年数据库系统工程师考试下午真题及解析2
2010上半年数据库系统工程师考试下午真题及解析
(2)
《五年高考三年模拟》相当于高考“武功秘籍”中的《九阴真经》。
海量的题库,对真题详尽的解析,备受老师和学生的追捧。
可见,真题是应对考试的上好资料,下面希赛软考学院为你整理了2010上半年数据库系统工程师考试下午真题及解析,助你修炼出一身“绝技”,应对来年的数据库系统工程师考试。
试题三
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
某学校拟开发一套实验管理系统,对各课程的实验安排进行管理。
[需求分析]
每个实验室可进行的实验类型不同。
由于实验室和实验员资源有限,需根据学生人数分批次安排实验室和实验员。
一门含实验的课程可以开设给多个班级,每个班级每学期可以开设多门含实验的课程。
每个实验室都有其可开设的实验类型。
一门课程的一种实验可以根据人数、实验室的可容纳人数和实验室类型,分批次开设在多个实验室的不同时间段。
一个实验室的一次实验可以分配多个实验员负责辅导实验,实验员给出学生的每次实验成绩。
1.课程信息包括:
课程编号、课程名称、实验学时、授课学期和开课的班级等信息;实验信息记录该课程的实验进度信息,包括:
实验名、实验类型、学时、安排周次等信息,如表3-1所示。
2.以课程为单位制定实验安排计划信息,包括:
实验地点,实验时间、实验员等信息。
实验计划如表3-2所示。
3.由实验员给出每个学生每次实验的成绩,包括:
实验名,学号,姓名,班级,实验成绩等信息。
实验成绩如表3-3所示。
4.学生的实验课程总成绩根据每次实验的成绩以及每次实验的难度来计算。
[概念模型设计]
根据需求阶段收集的信息,设计的实体联系图(不完整)如图3-1所示。
[逻辑结构设计]
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
课程(课程编号,课程名称,授课院系,实验学时)
班级(班级号,专业,所属系)
开课情况(
(1),授课学期)
实验(
(2),实验类型,难度,学时,安排周次)
实验计划((3),实验时间,人数)
实验员((4),级别)
实验室(实验室编号,地点,开放时间,可容纳人数,实验类型)
学生((5),姓名,年龄,性别)
实验成绩((6),实验成绩,评分实验员)
[问题1]
补充图3-1中的联系和联系的类型。
[问题2]
根据图3-1,将逻辑结构设计阶段生成的关系模式中的空
(1)~(6)补充完整。
对所有关系模式,用下划线标出各关系模式的主键。
[问题3]
如果需要记录课程的授课教师,新增加“授课教师”实体。
请对图3-1进行修改,画出修改后的实体问联系和联系的类型。
试题三分析
本题考查数据库概念结构设计及向逻辑结构转换的掌握。
此类题目要求考生认真阅读题目,根据题目的需求描述,给出实体问的联系。
[问题1]
根据题意由“一门含实验的课程可以开设给多个班级,每个班级每学期可以开设多门含实验的课程”可知课程和班级之间的开设关系为m:
n联系。
由“一个实验室的一次实验可以分配多个实验员负责辅导实验”可知实验、实验室与实验员之间的安排关系为k:
n:
m联系。
由“实验员给出学生的每次实验成绩”可知实验、学生与实验员之间的成绩关系为k:
n:
m联系。
班级和学生之间的包含关系为1:
n联系。
[问题2]
根据题意,可知课程编号是课程的主键,班级号是班级的主键。
从表3-1可见,开课情况是体现课程与班级间的m:
n联系,因此开课情况关系模式应该包含课程编号和班级号,并共同作为主键。
一门课程包含多次实验,实验与课程之间是m:
1关系,因此,由表3-1可知,实验关系模式应包含实验编号和课程编号,并且以实验编号为主键,以课程编号为外键。
在制定试验计划时,每个班的每次实验可能按实验室被分成多个批次,每个批次的实验会有若干名实验员来辅导学生实验并打分。
实验员关系模式应该记录实验员编号和实验员姓名,并以实验员编号为主键。
实验室编号是实验室的主键。
从表3-2可知,实验计划关系模式应记录实验编号、批次号和授课学期,并且共同作为主键。
从表3-3可知,实验成绩关系模式记录每个学生的每次实验成绩,应包含学号和实验编号,并共同作为主键。
[问题3]
由于授课教师负责给若干个班级开设若干门课程,因此,课程、班级和授课教师之间的开设关系是k:
n:
m联系。
参考答案
[问题1]
答案参见图3-1。
[问题2]
(1)课程编号,班级号
(2)实验编号,课程编号
(3)实验编号,批次号,安排学期,,实验室编号,实验员编号
(4)实验员编号,实验员姓名
(5)学号,班级号
(6)实验编号,学号
(7)其他关系模式主键:
课程(课程编号,课程名称,授课院系,实验学时)
班级(班级号,专业,所属系)
实验室(实验室编号,地点,开放时间,可容纳人数,实验课类型)
[问题3]
试题四
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
某旅行社拟开发一套旅游管理系统,以便管理旅游相关的信息。
1.旅行社可发布旅游线路的信息,包含:
线路的价格、天数、住宿情况,以及具体的行程安排等。
不同的线路参观的景点及住宿情况不相同,如表4-1所示。
2.游客与旅行社沟通,选择适合自己的线路,并由旅行社为其生成订单,以记录游客联系人的姓名、身份证号、联系方式、人数、所选线路、导游安排和票务信息。
旅行社为游客在行程中的每个城市安排一个负责导游,负责游客在该城市的具体旅行安排。
同一城市的负责导游相同,不同城市的负责导游有可能不同。
3.旅行社的每位员工只属于一种固定的员工类别,系统可记录员工的多部手机号。
旅行社按月统计导游每月的带团人数和游客投诉次数,以计算导游的当月月薪。
根据上述需求,初步设计了旅游信息数据库,其关系模式如图4-1所示。
关系模式中主要属性的含义及约束如表4-2所示。
[问题1]
对关系“线路信息”,请回答以下问题:
(1)列举出所有不属于任何候选键的属性(非键属性)。
(2)关系“线路信息”是否为BCNF范式,用60字以内文字简要叙述理由。
[问题2]
对关系“订单信息”,请回答以下问题:
(1)“订单信息”是否为2NF范式,用100字以内文字简要说明会产生什么问题。
(2)把“订单信息”分解为第三范式,分解后的关系名依次为:
订单信息1,订单信息2,…。
(3)列出分解后的各关系模式的主键。
[问题3]
对关系“员工信息”,请回答以下问题:
(1)关系“员工信息”是不是第四范式,用100字以内文字叙述理由。
(2)若“员工信息”不是第四范式,将其分解为第四范式,分解后的关系名依次为:
员工信息1,员工信息2,…。
试题四分析
本题考查数据库理论的规范化。
[问题1]
本问题考查非主属性和BCNF范式。
根据题意和“线路信息”关系模式可知,不属于任何候选键的属性(非键属性)为:
价格,天数。
根据BCNF范式的要求:
每一个函数依赖的决定因素都包含码。
而“线路信息”关系模式的函数依赖为:
线路编号→价格,天数
因此,“线路信息”关系模式可以达到BCNF范式。
[问题2]
本问题考查第二范式和第三范式的理解和应用。
根据第二范式的要求:
不存在非主属性对码的部分依赖。
根据题意和“订单信息”关系模式可知,不属于任何候选键的属性(非键属性)为:
线路编号,联系人名称,联系人身份证号,人数,联系方式,订单价格,出发时间,负责城市。
“订单信息”关系模式的函数依赖为:
订单号,负责导游工号→负责城市
订单号→线路编号,联系人身份证号,人数,订单价格,出发时间联系人身份证号→联系人名称,联系方式。
“订单信息”关系模式存在非主属性对码的部分依赖,因此,不属于第二范式。
根据第三范式的要求:
每一个非主属性既不部分依赖于码也不传递依赖于码。
因此,需要根据第三范式的要求和“订单信息”关系模式的函数依赖,对“订单信息”关系模式进行分解以满足第三范式的要求。
[问题3]
本问题考查第四范式的理解和应用。
根据第四范式的要求:
不允许有非平凡且非函数依赖的多值依赖。
“员工信息”关系模式的函数依赖为:
员工工号→姓名,年龄,员工类别员工工号→手机号
员工工号→计薪月,被投诉次数,带团人数,月薪
由“员工信息”关系模式的函数依赖可知,“员工信息”关系模式存在部分依赖,所以,“员工信息”关系模式不满足第二范式;而“员工信息”关系模式也存在多值依赖,所以,“员工信息”关系模式不满足第四范式。
因此,需要根据第四范式的要求和“员工信息”关系模式的函数依赖,对“员工信息”关系模式进行分解以满足第四范式的要求。
参考答案
[问题1]
(1)价格,天数
(2)“线路信息”关系模式可以达到BCNF范式。
因为非主属性价格、天数完全函数依赖于码且不传递依赖于码,且仅一个候选码,并为单属性。
或答:
每个函数依赖的决定因素都包含码。
[问题2]
(1)“订单信息”关系不满足第二范式,即非主属性不完全依赖于码。
会造成插入异常、删除异常和修改复杂(或修改异常)。
(2)分解后的关系模式如下:
订单信息1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数)订单信息2(联系人身份证号,联系人名称,联系方式)订单信息3(订单号,负责导游工号,负责城市)(3)分解后的主键如下:
订单信息1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数)订单信息2(联系人身份证号,联系人名称,联系方式)订单信息3(订单号,负责导游工号,负责城市)[问题3]
(1)“员工信息”关系模式,不满足第四范式。
答出以下内容之一即可:
①该关系模式不满足第二范式。
②该关系模式存在多值依赖。
③员工工号,计薪月→姓名,年龄,员工类别,为部分决定。
④员工工号→手机号。
(2)分解后的关系模式如下:
员工信息1(员工工号,姓名,年龄,员工类别)员工信息2(员工工号,手机号)
员工信息3(员工工号,计薪月,被投诉次数,带团人数,月薪)
试题五
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。
各售票网点使用相同的售票程序。
假设售票程序中用到的伪指令如表5-1所示。
假设某售票网点一次售出a张航班A的机票,则售票程序的伪指令序列为:
R(A,x);W(A,X-a)。
根据上述业务及规则,完成下列问题:
[问题1]
若两个售票网点同时销售航班A的机票,在数据库服务器端可能出现如下的调度:
A:
R1(A,x),R2(A,X),W1(A,x-1),W2(A,x-2);
B:
R1(A,x),R2(A,x),W2(A,x-2),W1(A,x-1);
C:
R1(A,x),W1(A,x-1),R2(A,X),W2(A,x-2);
其中Ri(A,x),Wi(A,x)分别表示第i个销售网点的读写操作,其余类同。
假设当前航班A剩余10张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。
[问题2]
(1)判定事务并发执行正确性的准则是什么?
如何保证并发事务正确地执行?
(2)引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。
[问题3]
下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。
EXECSQLSETTRANSACTIONISOLATIONLEVELSERIALIZABLE
EXECSQLSELECTbalanceINTO:
xFROMticketsWHEREflight='A';
printf("航班A当前剩余机票数为:
%d\n请输入购票数:
",x);
scanf("%d",&a);
x=x-a;
if(x<0)
EXECSQLROLLBACKWORK;
printf("票数不够,购票失败!
");
else{
EXECSQLUPDATEticketsSET(a)
if(SQLCA.sqlcode<>SUCCESS)
EXECSQLROLLBACKWORK;
else(b)}
试题五分析
本题考查的是并发控制的概念和应用,属于比较传统的题目,考查点也与往年类似。
[问题1]
本问题考查并发情况下不同的调度可能产生不同结果的情况。
针对两个并发执行的售票程序,会相互影响从而得到错误的结果。
[问题2]
本问题考查对事务并发控制的相关知识的理解掌握。
事务并发调度是否正确,可通过对非冲突语句进行交换,若最终将并发调度通过交换非冲突语句转换成串行调度,则该并发调度为可串行化调度,可串行化调度被作为事务并发执行正确性的准则。
为保证可串行化调度,在事物执行过程中引入相应指令进行控制,即两段锁协议(2PL),即对数据读之前先加读锁,写前加写锁,事务只有获得相应的锁才能操作数据,加解锁过程分为两个阶段,前一阶段只能加锁,后一阶段只能解锁,不允许有交叉。
两段锁协议是保证并发事务可串行化调度的充分条件。
针对给出的伪指令操作序列,在事务读取数据之前加Slock()指令,写数据之前加Xlock()指令,并保证读/写锁不交叉,即满足两段锁协议。
[问题3]
本问题考查对2PL协议理论与SQL中的隔离级别,以及嵌入式SQL的编程实践。
本地给出的空缺(a)要补充的是嵌入式SQL的更新语句;空缺(b)要补充的是嵌入式SQL中的事务提交语句。
参考答案
[问题1]
调度A结果:
8
调度B结果:
9
调度C结果:
7
调度A、B结果错误,因为破坏了事务的隔离性。
一个事务的执行结果被另一个所覆盖。
[问题2]
(1)判定事务并发执行正确性的准则是满足可串行化调度。
要保证并发事务正确地执行,采用两段锁协议(2PL)。
(2)重写后的售票程序伪指令序列:
XLock(A);
R(A,x);
w(A,x-a);
Unlock(A);
[问题3]
(a)balance=:
xWHEREflight='A'
(b)(b)EXECSQLCOMMITWORK