上半年下午 数据库工程师 试题及答案与解析软考考试真题案例分析.docx
- 文档编号:25542286
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:21
- 大小:997.65KB
上半年下午 数据库工程师 试题及答案与解析软考考试真题案例分析.docx
《上半年下午 数据库工程师 试题及答案与解析软考考试真题案例分析.docx》由会员分享,可在线阅读,更多相关《上半年下午 数据库工程师 试题及答案与解析软考考试真题案例分析.docx(21页珍藏版)》请在冰豆网上搜索。
上半年下午数据库工程师试题及答案与解析软考考试真题案例分析
2010年上半年下午数据库工程师考试试题-
案例分析-答案与解析
试题一(共15分)
阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中间件,其主要功能如下:
(1)数据管理员可通过中间件进行用户管理、操作管理和权限管理。
用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
(2)中间件验证前端应用提供的用户信息。
若验证不通过,返回非法用户信息;若验证通过,中间件将等待前端应用提交操作请求。
(3)前端应用提交操作请求后,中间件先对请求进行格式检查。
如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证(验证用户是否有权执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理。
(4)连接管理连接相应的后台数据库并提交操作。
连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接。
(5)后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。
现采用结构化方法对系统进行分析与设计,获得如图1-1所示的顶层数据流图和图1-2所示的0层数据流图。
【问题1】
使用说明中的词语,给出图1-1中的实体E1〜E3的名称。
【参考答案】
E1、前端应用
E2、数据管理员
E3、后端数据库
【答案解析】
本问题考查顶层DFD。
顶层DFD—般用来确定系统边界,将待开发系统看作是一个加工,因此图中只有唯一的一个加工和一些外部实体,以及这两者之间的输入输出数据流。
题目要求根据描述确定图中的外部实体。
分析题目中的描述,并结合已经在顶层数据流图中给出的数据流进行分析。
题目中有信息描述:
数据管理员可通过中间件进行用户管理、操作管理和权限管理;前端应用提交操作请求;连接管理连接相应的后台数据库并提交操作。
由此可知该中间件系统有数据管理员、前端应用和后端数据库三个外部实体。
对应图1-1中数据流和实体的对应关系,可知E1为前端应用,E2为数据管理员,E3为后端数据库。
【问题2】
使用说明中的词语,给出图1-2中的数据存储D1〜D3的名称。
【参考答案】
D1、用户表
D2、操作表
D3、权限表
【答案解析】
本问题考查0层DFD中数据存储的确定。
说明中描述:
用户信息(用户名、密码)存储在用户表中;标准操作和后端数据库信息存放在操作表中;权限管理维护信息存放在权限表中。
因此数据存储为用户表、操作表以及权限表。
再根据图1-2中D1的输入数据流从用户管理来,D2的输入数据流从操作管理来,D3的输入数据流从权限管理来,所以D1为用户表,D2为操作表,D3为权限表。
【问题3】
给出图1-2中加工P的名称及其输入、输出流。
名称
起点
终点
输入流
P
输出流
P
除加工P的输入与输出流外,图1-2还缺失了两条数据流,请给出这两条数据流的起点和终点。
起点
终点
注:
名称使用说明中的词汇,起点和终点均使用图1-2中的符号或词汇。
【参考答案】
P的名称:
操作结果处理
名称
起点
终点
输入流
操作结果
E3
P
输出流
处理后操作结果
P
E1
缺少的数据流:
起点
终点
D2
权限验证
D3
权限验证
【答案解析】
本问题考查0层DFD中缺失的加工和数据流。
比较图1-1和图1-2,可知顶层DFD中的操作结果和处理后的操作结果没有在0层DFD中体现。
再根据描述:
后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。
可知,需要有操作结果处理,因此P为操作结果处理,其输入流从后端数据库E3来的操作结果,输出结果为处理后的操作结果,并返回给前端应用E1。
考查完P及其输入输出流之后,对图1-2的内部数据流进行考查,以找出缺失的另外2条数据流。
从图中可以看出D2和D3只有输入流没有输出流,这是常见DFD设计时的错误,所以首先考查D2和D3的输出流。
描述中:
权限验证是验证用户是否有权执行请求的操作,若用户有权执行该操作,进行连接管理;连接管理连接相应的后台数据库并提交操作;权限表存储用户可执行的操作信息。
因此,权限验证有从权限表D3来的输入数据流。
而要连接后端数据库,需要数据库信息,从权限验证的输出流中包含有数据库信息可知,权限验证需要获取到数据库信息,所以还需从操作表D2来的输入流。
【问题4】
在绘制数据流图时,需要注意加工的绘制。
请给出三种在绘制加工的输入、输出时可能出现的错误。
【参考答案】
1、在绘制数据流图的加工时,可能出现的输入、输出错误:
2、只有输入而无输出或者黑洞
3、只有输出而无输入或者奇迹
4、输入的数据流无法通过加工产生输出流或者灰洞
5、输入的数据流与输出的数据流名称相同
【答案解析】
本问题考查在绘制数据流图中加工绘制时的注意事项。
绘制加工时可能出现的错误有:
加工的输入、输出时可能出现只有输入而无输出、只有输出而无输入、输入的数据流无法通过加工产生输出流以及输入的数据流与输出的数据流名称相同等错误。
试题二
天津市某银行信息系统的数据库部分关系模式如下所示:
客户(客户号,姓名,性别,地址,邮编,电话)
账户(账户号,客户号,开户支行号,余额)
支行(支行号,支行名称,城市,资产总额)
交易(交易号,账户号,业务金额,交易曰期)
其中,业务金额为正值表示客户向账户存款;为负值表示取款。
【问题1】
以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客户关系的唯一标识,且不能为空。
账户余额不能小于1.00元。
请将空缺部分补充完整。
【参考答案】
(a)、PRIMARYKEY/NOTNULLUNIQUE/NOTNULLPRIMARYKEY
(b)、FOREIGNKEY(客户号)REFERENCES客户(客户号)
(c)、CHECK(余额>1.00)
【答案解析】
由于问题1中“账户号唯一识别一个账户”可知账户号为账户关系的主键,即不能为空且唯一标识一条账户信息,因此需要用PRIMARYKEY对该属性进行主键约束;又由于“客户号为客户关系的唯一标识,且不能为空”可知客户号为客户关系的主键,在账户关系中应作外键,用FOREIGNKEY对该属性进行外键约束;由“账户余额不能小于1.00元”可知需要限制账户余额属性值的范围,通过CHECK约束来实现。
从上分析可见,完整的SQL语句如下:
【问题2】
(1)现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行存取服务的所有客户的详细信息,请补充完整相应的查询语句。
(2)假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息并按客户号降序排列。
【参考答案】
(1):
(d)、支行.城市='天津市’
(e)、交易.交易日期LIKE'2009-09-%,或等价表示
注:
(d)(e)次序无关
(f)、(SELECT*FROM支行WHERE城市='天津市')
(g)、(SELECT*FROM交易WHERE交易日期LIKE'2009-09%’)或等价表示
(2):
(h)、客户号IN
(i)、HAVINGSUM(余额)>1000000.00或等价表示
(j)、客户号DESC
【答案解析】
SQL查询通过SELECT语句实现。
(1)根据问题2要求应在表连接条件的基础上,需要添加两个条件:
①支行关系的城市属性值为“天津市”,即支行.城市=’天津市’;②在2009年9月存在交易记录,由于交易日期形式为’2000-01-01',所以需要通过模糊匹配来实现,用LIKE关键词和通配符表示,即交易.交易日期LIKE'2009-09-%'。
WHERE子句中条件的先后顺序会对执行效率产生影响。
假如解析器是按照先后顺序依次解析并列条件,优化的原则是:
表之间的连接必须出现在其他WHERE条件之后,那些可以过滤掉最多条记录的条件尽可能出现在WHERE子句中其他条件的前面。
要实现上述优化过程,可以重新组织WHERE条件的顺序或者通过嵌套查询以缩小连接记录数目的规模来实现。
.
根据问题2要求,考生需要添加两个子查询以缩小参与连接的记录的数目,即筛选出天津市的所有支行(SELECT*FROM支行WHERE城市=•天津市’),而且找到2009年9月发生的交易记录(SELECT*FROM交易WHERE交易日期LIKE'2009-09-%')y然后再做连接查询。
(2)根据问题2要求,可通过子查询实现“所有账户余额之和超过百万的客户信息”的查询;对SUM函数计算的结果应通过HAVING条件语句进行约束;降序通过DESC关键字来实现。
【问题3】
(1)为账户关系增加一个属性“账户标记”,缺省值为0,取值类型为整数;并将当前账户关系中所有记录的“账户标记”属性值修改为0。
请补充相关SQL语句。
(2)对于每笔金额超过10万元的交易,其对应账户标记属性值加1,给出触发器实现的方案。
【参考答案】
(1):
(k)、ADD账户标记INT
(1)、SET账户标记=0;
(2):
(m)、AFTERINSERT
(n)、新交易.金额>100000.00或等价表示
(o)、账户.账户号=新交易.账户号
【答案解析】
(1)关系模式的修改通过ALTER语句来实现,使用ADD添加属性;使用SET修改属性值。
(2)创建触发器可通过CREATETRIGGER语句实现,问题3要求考生掌握该语句的基本语法结构。
按照问题3要求,在交易关系中插入一条记录时触发器应自动执行,故需要创建基于INSERT类型的触发器,其触发条件是新插入交易记录的金额属性值>100000.00;最后添加表连接条件。
完整的触发器实现方案如下:
试题三
某学校拟开发一套实验管理系统,对各课程的实验安排进行管理。
【需求分析】
每个实验室可进行的实验类型不同。
由于实验室和实验员资源有限,需根据学生人数分批次安排实验室和实验员。
一门含实验的课程可以开设给多个班级,每个班级每学期可以开设多门含实验的课程。
每个实验室都有其可开设的实验类型。
一门课程的一种实验可以根据人数、实验室的可容纳人数和实验室类型,分批次开设在多个实验室的不同时间段。
一个实验室的一次实验可以分配多个实验员负责辅导实验,实验员给出学生的每次实验成绩。
1.课程信息包括:
课程编号、课程名称、实验学时、授课学期和开课的班级等信息;实验信息记录该课程的实验进度信息,包括:
实验名、实验类型、学时、安排周次等信息,如表3-1所示。
2.以课程为单位制定实验安排计划信息,•包括:
实验地点,实验时间、实验员等信息。
实验计划如表3-2所示。
3.由实验员给出每个学生每次实验的成绩,包括:
实验名,学号,姓名,班级,实验成绩等信息。
实验成绩如表3-3所示。
4.学生的实验课程总成绩根据每次实验的成绩以及每次实验的难度来计算。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图3-1所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
【问题1】
补充图3-1中的联系和联系的类型。
【参考答案】
答案参见图3-1。
【答案解析】
根据题意由“一门含实验的课程可以开设给多个班级,每个班级每学期可以开设多门含实验的课程”可知课程和班级之间的开设关系为联系。
由“一个实验室的一次实验可以分配多个实验员负责辅导实验”可知实验、实验室与实验员之间的安排关系为联系。
由“实验员给出学生的每次实验成绩”可知实验、学生与实验员之间的成绩关系为k:
n:
m联系。
班级和学生之间的包含关系为1:
n联系。
【问题2】
根据图3-1,将逻辑结构设计阶段生成的关系模式中的空
(1)〜(6)补充完整。
对所有关系模式,用下划线标出各关系模式的主键。
【参考答案】
(1)、课程编号,班级号
(2)、实验编号,课程编号
(3)、实验编号,批次号,安排学期,实验室编号,实验员编号
(4)、实验员编号,实验员姓名
(5)、室i,班级号
(6)、实验编号,学号其他关系模式主键:
课程(课程编号,课程名称,授课院系,实验学时)
班级(班级号,专业,所属系)
实验室(实验室编号,地点,开放时间,可容纳人数,实验课类型)
【答案解析】
根据题意,可知课程编号是课程的主键,班级号是班级的主键。
从表3-1可见,开课情况是体现课程与班级间的m:
n联系,因此开课情况关系模式应该包含课程编号和班级号,并共同作为主键。
一门课程包含多次实验,实验与课程之间是m:
l关系,因此,由表3-1可知,实验关系模式应包含实验编号和课程编号,并且以实验编号为主键,以课程编号为外键。
在制定试验计划时,每个班的每次实验可能按实验室被分成多个批次,每个批次的实验会有若干名实验员来辅导学生实验并打分。
实验员关系模式应该记录实验员编号和实验员姓名,并以实验员编号为主键。
实验室编号是实验室的主键。
从表3-2可知,实验计划关系模式应记录实验编号、批次号和授课学期,并且共同作为主键。
从表3-3可知,实验成绩关系模式记录每个学生的每次实验成绩,应包含学号和实验编号,并共同作为主键。
【问题3】
如果需要记录课程的授课教师,新增加“授课教师”实体。
请对图3-1进行修改,画出修改后的实体间联系和联系的类型。
【参考答案】
【答案解析】
由于授课教师负责给若干个班级开设若干门课程,因此,课程、班级和授课教师之间的开设关系是联系。
试题四
某旅行社拟开发一套旅游管理系统,以便管理旅游相关的信息。
1.旅行社可发布旅游线路的信息,包含:
线路的价格、天数、住宿情况,以及具体的行程安排等。
不同的线路参观的景点及住宿情况不相同,如表4-1所示。
2.游客与旅行社沟通,选择适合自己的线路,并由旅行社为其生成订单,以记录游客联系人的姓名、身份证号、联系方式、人数、所选线路、导游安排和票务信息。
旅行为游客在行程中的每个城市安排一个负责导游,负责游客在该城市的具体旅行安排。
同一城市的负责导游相同,不同城市的负责导游有可能不同。
3.旅行社的每位员工只属于一种固定的员工类别,系统可记录员工的多部手机号。
旅行社按月统计导游每月的带团人数和游客投诉次数,以计算导游的当月月薪。
根据上述需求,初步设计了旅游信息数据库,其关系模式如图4-1所示。
【问题1】
对关系“线路信息”,请回答以下问题:
(1)、列举出所有不属于任何候选键的属性(非键属性)。
.
(2)、关系“线路信息”是否为BCNF范式,用60字以内文字简要叙述理由。
【参考答案】
(1)价格,天数
(2)“线路信息”关系模式可以达到BCNF范式。
因为非主属性价格、天数完全函数依赖于码且不传递依赖于码,且仅一个候选码,并为单属性。
或答:
每个函数依赖的决定因素都包含码。
【答案解析】
本问题考查非主属性和BCNF范式。
根据题意和“线路信息”关系模式可知,不属于任何候选键的属性(非键属性)为:
价格,天数。
根据BCNF范式的要求:
每一个函数依赖的决定因素都包含码。
而“线路信息”关系模式的函数依赖为:
线路编号一价格,天数
因此,“线路信息”关系模式可以达到BCNF范式。
【问题2】
对关系“订单信息,’,请回答以下问题:
(1)、“订单信息”是否为2NF范式,用100字以内文字简要说明会产生什么问题。
(2)、把“订单信息”分解为第三范式,分解后的关系名依次为:
订单信息1,订单信息2,…。
(3)、列出分解后的各关系模式的主键。
【参考答案】
(1)“订单信息”关系不满足第二范式,即非主属性不完全依赖于码。
会造成插入异常、删除异常和修改复杂(或修改异常)。
(2)分解后的关系模式如下:
订单信息1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数)订单信息2(联系人身份证号,联系人名称,联系方式)
订单信息3(订单号,负责导游工号,负责城市)
(3)分解后的主键如下:
订单信息1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数)订单信息2(联系人身份证号,联系人名称,联系方式)
订单信息3(订单号,负责导游工号,负责城市)
【答案解析】
本问题考查第二范式和第三范式的理解和应用。
根据第二范式的要求:
不存在非主属性对码的部分依赖。
根据题意和“订单信息”关系模式可知,不属于任何候选键的属性(非键属性)为:
线路编号,联系人名称,联系人身份证号,人数,联系方式,订单价格,出发时间,负责城市。
“订单信息”关系模式的函数依赖为:
订单号,负责导游工号→负责城市
订单号→线路编号,联系人身份证号,人数,订单价格,出发时间
联系人身份证号→联系人名称,联系方式
“订单信息”关系模式存在非主属性对码的部分依赖,因此,不属于第二范式。
根据第三范式的要求:
每一个非主属性既不部分依赖于码也不传递依赖于码。
因此,需要根据第三范式的要求和“订单信息”关系模式的函数依赖,对“订单信息”关系模式进行分解以满足第三范式的要求。
【问题3】
对关系“员工信息”,请回答以下问题:
(1)关系“员工信息”是不是第四范式,用100字以内文字叙述理由。
(2)若“员工信息”不是第四范式,将其分解为第四范式,分解后的关系名依次为:
员工信息1,员工信息2,…。
【参考答案】
(1)、“员工信息”关系模式,不满足第四范式。
答出以下内容之一即可:
1该关系模式不满足第二范式。
2②该关系模式存在多值依赖。
3员工工号,计薪月一姓名,年龄,员工类别,为部分决定。
4员工工号一手机号。
(2)分解后的关系模式如下:
员工信息1(员工工号,姓名,年龄,员工类别)
员工信息2(员工工号,手机号)
员工信息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张机票,分析上述三个调度各自执拧完后的剩余票数,并指出错误的调度及产生错误的原因。
【参考答案】
调度A结果:
8
调度B结果:
9
调度C结果:
7
调度A、B结果错误,因为破坏了事务的隔离性。
一个事务的执行结果被另一个所覆盖。
【答案解析】
本问题考查并发情况下不同的调度可能产生不同结果的情况。
针对两个并发执行的售票程序,会相互影响从而得到错误的结果。
【问题2】
(1)判定事务并发执行正确性的准则是什么?
如何保证并发事务正确地执行?
(2)引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。
【参考答案】
(1)、判定事务并发执行正确性的准则是满足可串行化调度。
要保证并发事务正确地执行,采用两段锁协议(2PL)。
(2)、重写后的售票程序伪指令序列:
XLock(A);R(A,x);W(A,x-a);Unlock(A);
【答案解析】
事务并发调度是否正确,可通过对非冲突语句进行交换,若最终将并发调度通过交换非冲突语句转换成串行调度,则该并发调度为可串行化调度,可串行化调度被作为事务并发执行正确性的准则。
为保证可串行化调度,在事物执行过程中引入相应指令进行控制,即两段锁协议(2PL),即对数据读之前先加读锁,写前加写锁,事务只有获得相应的锁才能操作数据,加解锁过程分为两个阶段,前一阶段只能加锁,后一阶段只能解锁,不允许有交叉。
两段锁协议是保证并发事务可串行化调度的充分条件。
针对给出的伪指令操作序列,在事务读取数据之前加Slock()指令,写数据之前加XlockO指令,并保证读/写锁不交叉,即满足两段锁协议。
【问题3】
下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。
【参考答案】
(a)、balance=:
xWHEREflight='A'
(b)、EXECSQLCOMMITWORK
【答案解析】
本问题考查对2PL协议理论与SQL中的隔离级别,以及嵌入式SQL的编程实践。
本地给出的空缺U)要补充的是嵌入式SQL的更新语句;空缺(b)要补充的是嵌入式SQL中的事务提交语句。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上半年下午 数据库工程师 试题及答案与解析软考考试真题案例分析 上半年 下午 数据库 工程师 试题 答案 解析 考试 案例 分析