软考数据库系统工程师下午试题与答案.docx
《软考数据库系统工程师下午试题与答案.docx》由会员分享,可在线阅读,更多相关《软考数据库系统工程师下午试题与答案.docx(25页珍藏版)》请在冰豆网上搜索。
软考数据库系统工程师下午试题与答案
试题一
阅读以下说明和图,根据要求回答下列问题。
[说明]
某慈善机构欲开发一个募捐系统,以跟踪记录为事业或项目向目标群体进行募捐而组织的集体性活动。
该系统的主要功能如下所示。
1管理志愿者。
根据募捐任务给志愿者发送加入邀请、邀请跟进、工作任务;管理志愿者提供的邀请响应、志愿者信息、工作时长、工作结果等。
2确定募捐需求和收集所募捐赠<资金及物品>。
根据需求提出募捐任务、活动请求和捐赠请求,获取所募集的资金和物品。
3组织募捐活动。
根据活动请求,确定活动时间范围。
根据活动时间,搜索场馆,即:
向场馆发送场馆可用性请求,获得场馆可用性。
然后根据活动时间和地点推广募捐活动,根据相应的活动信息举办活动,从募捐机构获取资金并向其发放赠品。
获取和处理捐赠,根据捐赠请求,提供所募集的捐赠;处理与捐赠人之间的交互,即:
录入捐赠人信息,处理后存入捐赠人信息表;从捐赠人信息表中查询捐赠人信息,向捐赠人发送募捐请求,并将已联系的捐赠人存入已联系的捐赠人表。
根据捐赠请求进行募集,募得捐赠后,将捐赠记录存入捐赠表;对捐赠记录进行处理后,存入已处理捐赠表,向捐赠人发送致谢函。
根据已联系的捐赠人和捐赠记录进行跟进,将捐赠跟进情况发送给捐赠人。
现采用结构化方法对募捐系统进行分析与设计,获得如图所示的分层数据流图。
1、使用说明中的词语,给出图1中的实体E1~E4的名称。
2、在建模DFD时,需要对有些复杂加工<处理>进行进一步精化,图2为图1中处理3的进一步细化的1层数据流图,图3为图2中3.1进一步细化的2层数据流图。
补全图2中加工P1、P2和P3的名称和图2与图3中缺少的数据流。
3、使用说明中的词语,给出图3中的数据存储D1~D4的名称。
试题一
1、E1:
志愿者E2:
捐赠人
E3:
募捐机构E4:
场馆
由题干中的关键信息"根据募捐任务给志愿者发送加入邀请、邀请跟进、工作任务;管理志愿者提供的邀请响应、志愿者信息、工作时长、工作结果等",结合如图1所示的0层数据流图中与实体E1相关的"加入邀请/邀请跟进/工作任务"这一条输入数据流,以及"志愿者信息/工作时长/邀请响应/工作结果"这一条输出数据流可知,实体E1的名称是"志愿者"。
根据题干中给出的"根据活动时间,搜索场馆,即:
向场馆发送场馆可用性请求,获得场馆可用性"等关键信息,结合图1中输入至实体E4的数据流"场馆可用性请求",以及输出数据流"场馆可用性"等可知,实体E4的名称是"场馆"。
基于题干中给出的"根据相应的活动信息举办活动,从募捐机构获取资金并向其发放赠品"等关键信息,结合图1中输入至实体E3的数据流"赠品",以及输出数据流"资金"等可知,实体E3的名称是"募捐机构"。
依据题干中给出的"从捐赠人信息表中查询捐赠人信息,向捐赠人发送募捐请求"等关键信息,结合图1中输入至实体E2的数据流"募捐请求",以及输出数据流"捐赠人信息"等可知,实体E2的名称是"捐赠人"。
2、P1:
确定活动时间范围P2:
搜索场馆
P3:
推广募捐活动
数据流名称
起点
终点
所募集资金
3.5或举办活动并募集资金
2
活动请求
2
3.2或确定活动时间范围
捐赠请求
2<可不填>
所募集捐赠<或
所募集资金或所
募集物品
或募集
2<可不填>
或募集
2<可不填>
或募集
2<可不填>
注:
数据流没有次序要求;其中"2"处可以为"确定募捐需求收集所募捐赠"
基于问题1的解析结果,结合如图2所示的1层数据流图中与加工P1相关的"活动时间"这一条输出数据流,查找到题干中与之相关的关键信息"<3>组织募捐活动。
根据活动请求,确定活动时间范围。
根据活动时间……"可知,P1的名称是"确定活动时间范围"。
根据题干中给出的"根据活动时间,搜索场馆,即:
向场馆发送场馆可用性请求,获得场馆可用性"等关键信息,结合图2中加工P2的输入数据流"活动时间"和"场馆可用性",以及输出数据流"场馆可用性请求"等可知,P2的名称是"搜索场馆"。
由题干中给出的关键信息"然后根据活动时间和地点推广募捐活动,根据相应的活动信息举办活动……"等,结合图2中加工P3的输入数据流"活动时间和地点",以及输出数据流"活动信息"等可知,P3的名称是"推广募捐活动"。
结合题干中给出的关键信息"<3>组织募捐活动。
根据活动请求,确定活动时间范围",以及图1中处理2至处理3的数据流"活动请求"可知,图2中缺少了一条从处理2至处理3.2的数据流"活动请求"。
依据题干中给出的"<2>确定募捐需求和收集所募捐赠<资金及物品>……获取所募集的资金和物品"、"<3>组织募捐活动……获取和处理捐赠,根据捐赠请求,提供所募集的捐赠"等关键信息可知,图2中缺少了一条从处理3.5至处理2的数据流"所募集资金"。
基于题干中给出的关键信息"<3>组织募捐活动……根据捐赠请求进行募集",以及图2中处理2至处理3.1的数据流"捐赠请求"可知,图3中缺少了一条从处理2至处理的数据流"捐赠请求"。
根据图2中处理3.1至处理2的数据流"所募集物品"、"所募集资金",以及"<2>确定募捐需求和收集所募捐赠<资金及物品>……获取所募集的资金和物品"可知,图3中缺少了一条从处理至处理2的数据流"所募集捐赠"。
3、D1:
捐赠人信息表D2:
已联系的捐赠人表D3:
捐赠表D4:
已处理捐赠表
结合题干中给出的关键信息"录入捐赠人信息,处理后存入捐赠人信息表",以及图3中处理的名称"录入捐赠人信息"可知,图3中数据存储D1的名称是"捐赠人信息表"。
同理,根据题干中给出的关键信息"……向捐赠人发送募捐请求,并将已联系的捐赠人存入已联系的捐赠人表",以及图3中处理的名称"请求募捐"及其输出数据流"已联系的捐赠人"等可知,数据存储D2的名称是"已联系的捐赠人表"。
基于题干中给出的关键信息"……根据捐赠请求进行募集,募得捐赠后,将捐赠记录存入捐赠表",以及图3中处理的名称"募集"及其输出数据流"捐赠记录"等可知,数据存储D3的名称是"捐赠表"。
依据题干中给出的关键信息"……对捐赠记录进行处理后,存入已处理捐赠表……",以及图3中处理的名称"募集"及其输出数据流"已处理的捐赠记录"等可知,数据存储D4的名称是"已处理捐赠表"。
试题二
阅读以下说明,根据要求回答下列问题。
[说明]
某航空公司要开发一个订票信息处理系统,该系统的部分关系模式如下:
航班<航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,票价>
折扣<航班编号,开始日期,结束日期,折扣>
旅客<身份证号,姓名,性别,出生日期,,VIP折扣>
购票<购票单号,身份证号,航班编号,搭乘日期,购票金额>
有关关系模式的属性及相关说明如下:
4航班表中的起飞时间和到达时间不包含日期,同一航班不会在一天出现两次及两次以上;
5各航空公司会根据旅客出行淡旺季适时调整机票的折扣,旅客购买机票的购票金额计算公式为:
票价×折扣×VIP折扣,其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票后被修改。
VIP折扣值的计算由函数floatvip_value完成。
根据以上描述,回答下列问题。
4、请将如下创建购票关系的SQL语句的空缺部分补充完整,要求指定关系的主键、外键,以及购票金额大于零的约束。
CREATETABLE购票<
购票单号CHAR<15>______,
身份证号CHAR<18>,
航班编号CHAR<6>,
搭乘日期DATE,
购票金额FLOAT______,
______,
______,
>;
5、<1>身份证号为的客户购买了20XX2月18日CA5302航班的机票,购票单号由系统自动生成。
下面的SQL语句将上述购票信息加入系统中,请将空缺部分补充完整。
INSERTINTO购票<购票单号,身份证号,航班编号,搭乘日期,购票金额>
______
FROM航班,折扣,旅客
WHERE______AND航班.航班编号='CA5302'AND
AND'2013/2/18'BETWEEN折扣.开始日期AND折扣.结束日期
AND旅客.身份证号
<2>需要用触发器来实现VIP折扣的修改,调用函数vip_value<>来实现。
请将如下SQL语句的空缺部分补充完整。
CREATETRIGGERVIP_TRGAFTER______ON______
REFERENCINGnewrowASnrow
FOREACHrow
BEGIN
UPDATE旅客
SET______
WHERE______;
END
6、请将如下SQL语句的空缺部分补充完整。
<1>查询搭乘日期在20XX1月1日至20XX12月31日之间,且合计购票金额大于等于10000元的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。
SELECT旅客.身份证号,姓名,SUM<购票金额>
FROM旅客,购票
WHERE______
GROUPBY______;
ORDERBY______;
<2>经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。
查询从XX到北京,经过一次中转的所有航班对,输出XX到中转地的航班编号、中转地、中转地到北京的航班编号。
SELECT______
FROM航班航班1,航班航班2
WHERE______;
试题二
4、PRIMARYKEY<或NOTNULLUNIQUE>
CHECK<购票金额>0>
FOREIGNKEY<身份证号>REFERENCES旅客<身份证号>
FOREIGNKEY<航班编号>REFERENCES航班<航班编号>
在创建"购票"关系模式的SQL语句时,由于属性"购票单号"为"购票"关系模式的主键,即不能为空且唯一标识一条数据记录,因此空缺处需要填入"PRIMARYKEY<或NOTNULLUNIQUE,或NOTNULLPRIMARYKEY>"对该属性进行主键约束。
结合题干给出的关键信息"购票金额大于零"可知,空缺处应填入"CHECK<购票金额>0>"对属性"购票金额"进行约束。
由于属性"身份证号"、"航班编号"是"购票"关系模式的外键,因此空缺处需要使用FOREIGNKEY对这两个属性进行外键约束,即应填入"FOREIGNKEY<身份证号>REFERENCES旅客<身份证号>"、"FOREIGNKEY<航班编号>REFERENCES航班<航班编号>"。
5、票价*折扣*VIP折扣
航班.航班编号=折扣.航班编号
INSERT
购票
VIP折扣=vip_value
旅客.身份证号=nrow.身份证号
<1>基于题干给出的关键信息"旅客购买机票的购票金额计算公式为:
票价×折扣×VIP折扣"可知,<空缺处对应填入INSERTINTO语句中"购票金额"的计算公式,即"票价*折扣*VIP折扣"。
结合题干给出的"其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票后被修改"等关键信息可知,该SELECT查询语句中将涉及到"航班"、"折扣"两个关系模式,因此空缺处应对这二者进行关联,即应填入"航班.航班编号=折扣.航班编号"。
<2>使用T-SQL语句来创建触发器的基本语句如下。
createtriggertrigger_nameon{table_name|view_name}{for|After|Insteadof}
[insert,update,delete]assql_statement
在"购票"关系模式中插入一条数据记录时,触发器应能够自动执行,