数据库系统工程师练习题及答案第一套.docx
《数据库系统工程师练习题及答案第一套.docx》由会员分享,可在线阅读,更多相关《数据库系统工程师练习题及答案第一套.docx(16页珍藏版)》请在冰豆网上搜索。
数据库系统工程师练习题及答案第一套
数据库系统工程师考试练习题
(一)
试题一
阅读下列说明和图,回答问题1至问题4将解答填入答题纸的对应栏
内。
[说明]
某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量
的连接需求,欲构建数据管理中问件,其主要功能如下:
(1)数据管理员可通过中间件进行用户管理、操作管理和权限管理。
用户管
理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数
据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。
(2)中间件验证前端应用提供的用户信息。
若验证不通过,返回非法用户信
息;若验证通过,中间件将等待前端应用提交操作请求。
(3)前端应用提交操作请求后,中间件先对请求进行格式检查。
如果格式不
正确,返回格式错误信息;如果格式正确,则进行权限验证(验证用户是否有权
执行请求的操作),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理。
(4)连接管理连接相应的后台数据库并提交操作。
连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接。
(5)后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进
行处理后,将其返回给前端应用。
现采用结构化方法对系统进行分析与设计,获得如图1-1所示的顶层数据
流图和图1-2所示的0层数据流图。
图顶层数堀流图
用戶信
D2
D3
权限Ift证
用户背理
用户信
连&W
图
1-1
O
验证后的樣作情求
1-20层数据流
1-2
[问题1]
使用说明中的词语,给出图
[问题2]
使用说明中的词语,给出图
[问题3]
给出图1-2中加工P的名称及其输入、输出流。
中的数据存储D1〜D3的名称。
中的实体E1〜E3的名称。
注:
名称使用说明中的词汇,起点和终点均使用图1-2中的符号或词汇
[问题4]
在绘制数据流图时,需要注意加工的绘制。
请给出三种在绘制加工的输人输出时可能出现的错误。
试题一分析
本题考查数据流图(DFD)的应用,是比较传统的题目,要求考生细心分析题目中所描述的内容。
DFD是一种便于用户理解、分析系统数据流程的图形工具,是系统逻辑模型的重要组成部分。
[问题1]
连按请求
非法用户何劈
用户信嵐
収限不足信丿
用户信息/操作
数据库佰凤/验低后的操作请求
操作書理
标仙僧后竭效据库信思
操作权用
t
(格式检査)
格式馆谋信息
1•作请求
名称
起点
终占"r八、、
输入流
P
输出流
P
起点
终占—、八、、
除加工P的输入与输出流外,图1-2还缺失了两条数据流,请给出这两条
数据流的起点和终点。
本问题考查顶层DFD项层DFD一股用来确定系统边界,将待开发系统看
作是一个加工,因此图中只有唯一的一个加工和一些外部实体,以及这两者之问的输入输出数据流。
题目要求根据描述确定图中的外部实体。
分析题目中的描述,并结合已经在顶层数据流图中给出的数据流进行分析。
题目中有信息描述:
数据管理员可通过中间件进行用户管理、操作管理和权限管理;前端应用提交操作请求;连接管理连接相应的后台数据库并提交操作。
由此可知该中间件系统有数据管理员、前端应用和后端数据库三个外部实体。
对应图1-1中数
据流和实体的对应关系,可知E1为前端应用,E2为数据管理员,E3为后端数据库。
[问题2]
本问题考查0层DFD中数据存储的确定。
说明中描述:
用户信息(用户名、
密码)存储在用户表中;标准操作和后端数据库信息存放在操作表中;权限管理维护信息存放在权限表中。
因此数据存储为用户表、操作表以及权限表。
再根据图1-2中D1的输入数据流从用户管理来,D2的输入数据流从操作管理来,
D3的输入数据流从权限管理来,所以D1为用户表,D2为操作表,D3为权限
表。
[问题3]
本问题考查0层DFD中缺失的加工和数据流。
比较图1-1和图1-2,可知顶层DFD中的操作结果和处理后的操作结果没有在0层DFD中体现。
再根据描
述:
后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。
可知,需要有操作结果处理,因此P为操作结果处理,其输入流从后端数据库E3来的操作结果,输出结果为处理后的操作结
证是验证用户是否有权执行请求的操作,若用户有权执行该操作,进行连接管理;连接管理连接相应的后台数据库并提交操作;权限表存储用户可执行的操
作信息。
因此,权限验证有从权限表D3来的输入数据流。
而要连接后端数据
库,需要数据库信息,从权限验证的输出流中包含有数据库信息可知,权限验证需要获取到数据库信息,所以还需从操作表D2来的输入流。
[问题4]
本问题考查在绘制数据流图中加工绘制时的注意事项。
绘制加工时可能出
现的错误有:
加工的输入、输出时可能出现只有输入而无输出、只有输出而无输入、输入的数据流无法通过加工产生输出流以及输入的数据流与输出的数据流名称相同等错误。
参考答案
[问题1]
E1:
前端应用E2:
数据管理员E3:
后端数据库
[问题2]
D1:
用户表D2:
操作表D3:
权限表
[问题3]
P的名称:
操作结果处理
终点
八、、
输入流
操作结果
E3
P
输出流
处理后的操作结果
P
E1
缺少的数据流:
起点
终占—、八、、
D2
权限验证
D3
权限验证
[问题4]
在绘制数据流图的加工时,可能出现的输入、输出错误:
只有输入而无输出或者黑洞只有输出而无输入或者奇迹
输入的数据流无法通过加工产生输出流或者灰洞输入的数据流与输出的数据流名称相同试题二
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]
天津市某银行信息系统的数据库部分关系模式如下所示:
客户(客户号,姓名,性别,地址,邮编,电话)
账户(账户号,客户号,开户支行号,余额)
支行(支行号,支行名称,城市,资产总额)
交易(交易号,账户号,业务金额,交易日期)
其中,业务金额为正值表示客户向账户存款;为负值表示取款。
[问题1]
以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客
户关系的唯一标识,且不能为空。
账户余额不能小于1.00元。
请将空缺部分补
充完整。
CREATETABL账户(账户号CHAR(19)隹―客户号CHAR(10)(b);
开户支行号CHAR(6)NOTNULL,余额NUMBER(8,2)(c));
[问题2]
(1)现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行
存取服务的所有客户的详细信息,请补充完整相应的查询语句。
(交易日期形式为'2000-01-01')
SELECTDISTINCT客户.*FROM客户,账户,支行,交易
WHER客户.客户号二账户.客户号AND账户.开户支行号二支行.支行号AND
(d)AND
交易.账户号=账户.账户号AND
(e);
上述查询优化后的语句如下,请补充完整。
SELECTDISTINCT客户.*
FROM客户,账户,(f)XS新支行,-(gT^AS新交易
WHER客户.客户号二账户.客户号AND
账户.开户支行号=新支行.支行号AND
新交易.账户号二账户.账户号;
(2)假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息并按客户号降序排列。
SELECT*
FROM客户
WHERE_(h)
(SELECT客户号FROMK户GROUPB客户号(i))
ORDERBY(j);
[问题3]
(1)为账户关系增加一个属性“账户标记”,缺省值为0,取值类型为整
数;并将当前账户关系中所有记录的“账户标记”属性值修改为0。
请补充相
关SQL语句。
ALTERTABLE账户(k)DEFAULT0;
UPDATE账户(l);
(2)对于每笔金额超过10万元的交易,其对应账户标记属性值加1,给出
触发器实现的方案。
CREATETRIGGE交易_触发器(m)_ON交易
REFERENCINGNEWROW新交易
FOREACHROW
WHEN(n)
BEGINATOMIC
UPDATE账户SET账户标记=账户标记+1
WHERE(o);
COMMITWORK;
END
试题二分析
本题考查SQL语句的基本语法与结构知识。
此类题目要求考生掌握SQL语句的基本语法和结构,认真阅读题目给出的
关系模式,针对题目的要求具体分析并解答。
本试题已经给出了4个关系模
式,需要分析每个实体的属性特征及实体之间的联系,补充完整SQL语句。
[问题1]
由于问题1中“账户号唯一识别一个账户”可知账户号为账户关系的主
键,即不能为空且唯一标识一条账户信息,因此需要用PRIMARYKEY对该属性
进行主键约束;又由于“客户号为客户关系的唯一标识,且不能为空”可知客
户号为客户关系的主键,在账户关系中应作外键,用FOREIGNKE对该属性进
行外键约束;由“账户余额不能小于1.00元”可知需要限制账户余额属性值的范围,通过CHECK勺束来实现。
从上分析可见,完整的SQL语句如下:
CREATETABL账户(
账户号CHAR(19)PRIMARYKEY,
客户号CHAR(10)FOREIGNKEY客户号)REFERENcE客户(客户号),开户支行号CHAR(6)NOTNUL,
余额NUMBER(8,2)CHECK余额〉1.00));
[问题2]
SQL查询通过SELECT语句实现
(1)根据问题2要求应在表连接条件的基础上,需要添加两个条件:
①支行关系的城市属性值为“天津市”,即支行城市='天津市’;②在2009年9月存
在交易记录,由于交易日期形式为'2000-01-01',所以需要通过模糊匹配来实现,用LIKE关键词和通配符表示,即交易.交易日期LIKE'2009-09-%'。
WHER子句中条件的先后顺序会对执行效率产生影响。
假如解析器是按照先后顺序依次解析并列条件,优化的原则是:
表之间的连接必须出现在其他WHER条
E件之后,那些可以过滤掉最多条记录的条件尽可能出现在WHER子句中其他条
件的前面。
要实现上述优化过程,可以重新组织WHER条件的顺序或
者通过嵌套查询以缩小连接记录数目的规模来实现。
根据问题2要求,考生需要添加两个子查询以缩小参与连接的记录的数
目即筛选出天津市的所有支行(SELECT+FRO支行WHER城市='天津市'),而
且找到2009年9月发生的交易记录(SELECT+FRO魂易WHER交易日期LIKE'2009-09-%'),然后再做连接查询。
(2)根据问题2要求,可通过予查询实现“所有账户余额之和超过百万的客户信息”的查询;对SUM函数计算的结果应通过HAVING条件语句进行约束;降
序通过DESC关键字来实现。
SELECT*
FROM客户
WHERE客户号IN
(SELECT客户号FROM账户GROUPBY客户号HAVINGSUM余额)>1000000.00)
ORDERB客户号D