2013年软考数据库系统工程师下午试题与答案

上传人:彩*** 文档编号:97657179 上传时间:2022-05-27 格式:DOCX 页数:23 大小:343.14KB
返回 下载 相关 举报
2013年软考数据库系统工程师下午试题与答案_第1页
第1页 / 共23页
2013年软考数据库系统工程师下午试题与答案_第2页
第2页 / 共23页
2013年软考数据库系统工程师下午试题与答案_第3页
第3页 / 共23页
点击查看更多>>
资源描述
.试题一阅读以下说明和图,根据要求回答下列问题。 说明某慈善机构欲开发一个募捐系统, 以跟踪记录为事业或项目向目标群体进行募捐而组织的集体性活动。该系统的主要功能如下所示。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中的数据存储 D1D4的名称。试题一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活动请求23.2 或确定活动时间范围捐赠请求2( 可不填 )3.1.3所募集捐赠 ( 或3.1.3或募集2( 可不填 )所募集资金或所3.1.3或募集2( 可不填 )募集物品3.1.3或募集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折扣值的计算由函数 float vip_value(char18身份证号 ) 完成。根据以上描述,回答下列问题。4、请将如下创建购票关系的 SQL语句的空缺部分补充完整,要求指定关系的主键、外键,以及购票金额大于零的约束。CREATE TABLE购票 (购票单号 CHAR(15) _,身份证号 CHAR(18),航班编号 CHAR(6),搭乘日期 DATE,购票金额 FLOAT _,_,_,);5、(1) 身份证号为的客户购买了 2013年 2月18日CA5302航班的机票,购票单号由系统自动生成。下面的 SQL语句将上述购票信息加入系统中,请将空缺部分补充完整。 INSERT INTO 购票 ( 购票单号 , 身份证号 , 航班编号 , 搭乘日期 , 购票金额 )_FROM航班 , 折扣 , 旅客WHERE _ AND航班 . 航班编号 =CA5302 ANDAND 2013/2/18 BETWEEN 折扣 . 开始日期 AND 折扣 . 结束日期 AND 旅客 . 身份证号(2) 需要用触发器来实现 VIP折扣的修改,调用函数 vip_value() 来实现。请将如下 SQL语句的空缺部分补充完整。CREATE TRIGGER VIP_TRG AFTER _ ON _RE FERENCING new row ASnrowFOR EACH row.BEGINUPDATE旅客SET _WHERE _;END6、请将如下 SQL语句的空缺部分补充完整。(1) 查询搭乘日期在 2012年1月1日至 2012年 12月31日之间,且合计购票金额大于等于 10000元的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。SELECT旅客 . 身份证号 , 姓名 ,SUM(购票金额 )FROM旅客 , 购票WHERE _GROUP BY _;ORDER BY _;(2) 经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。查询从广州到北京,经过一次中转的所有航班对,输出广州到中转地的航班编号、中转地、中转地到北京的航班编号。SELECT _FROM航班航班 1, 航班 航班 2WHERE _;试题二4、PRIMARY KEY(或 NOT NULL UNIQUE)CHECK(购票金额 0)FOREIGN KEY 身(份证号 ) REFERENCES旅客 ( 身份证号 )FOREIGN KEY 航(班编号 ) REFERENCES航班 ( 航班编号 )在创建“购票”关系模式的SQL语句时,由于属性“购票单号”为“购票”关系模式的主键,即不能为空且唯一标识一条数据记录,因此空缺处需要填入“ PRIMARYKEY(或 NOTNULLUNIQUE,或 NOTNULL PRIMARY KEY)”对该属性进行主键约束。结合题干给出的关键信息“购票金额大于零”可知, 空缺处应填入“ CHECK(购票金额 0) ”对属性“购票金额”进行约束。由于属性“身份证号”、“航班编号”是“购票”关系模式的外键,因此空缺处需要使用 FOREIGN KEY对这两个属性进行外键约束,即应填入“ FOREIGN KEY(身份证号 )REFERENCES旅客 ( 身份证号 ) ”、“ FOREIGN KEY(航班编号 )REFERENCES航班 ( 航班编号 ) ”。5、票价 * 折扣 *VIP 折扣航班 . 航班编号 =折扣 . 航班编号INSERT购票VIP折扣 =vip_value(nrow.身份证号 )旅客 . 身份证号 =nrow. 身份证号(1) 基于题干给出的关键信息“旅客购买机票的购票金额计算公式为:票价折扣VIP折扣”可知,( 空缺处对应填入 INSERT INTO语句中“购票金额”的计算公式,即“票价* 折扣 *VIP 折扣”。结合题干给出的“其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票后被修改”等关键信息可知,该 SELECT查询语句中将涉及到“航班”、“折扣”两个关系模式,因此空缺处应对这二者进行关联,即应填入“航班. 航班编号 =折扣 . 航班编号”。(2) 使用 T-SQL语句来创建触发器的基本语句如下。create trigger trigger_name on table_name | view_name for | After | Instead of insert ,update , delete as sql_statement.在“购票”关系模式中插入一条数据记录时,触发器应能够自动执行,因此需要创建基于INSERT类型的触发器,即空缺处应依次填入“ INSERT”、“购票”。根据题干给出的“ VIP折扣值的计算由函数float vip_value(char18身份证号 ) 完成”等关键信息可知,空缺处应填入的触发器执行动作是“VIP折扣 =vip_value(nrow.身份证号 ) ”。空缺处应添加表的连接条件“旅客. 身份证号 =nrow. 身份证号”。6、旅客 . 身份证号 =购票 . 身份证号 AND搭乘日期 BETWEEN 2012/1/1 AND 2012/12/31旅客 . 身份证号 , 姓名 HAVING SUM(购票金额 ) =10000 SUM(购票金额 ) DESC航班 1. 航班编号 , 航班 1. 目的地 , 航班 2. 航班编号航班 1. 起飞地 = 广州 AND 航班 2. 目的地 = 北京 AND 航班 1. 目的地 =航班 2. 起飞地 ;(1)(1) 查询搭乘日期在 2012年1月1日至 2012年 12月31日之间,且合计购票金额大于等于 10000元的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。SELECT旅客 . 身份证号 , 姓名 ,SUM(购票金额 )FROM旅客 , 购票WHERE旅客 . 身份证号 =购票 . 身份证号 AND搭乘日期 BETWEEN 2012/1/1 AND 2012/12/31GROUP BY旅客 . 身份证号 , 姓名 HAVING SUM(购票金额 ) =10000; ORDER BY SUM(购票金额 ) DESC;(2) 经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。查询从广州到北京,经过一次中转的所有航班对,输出广州到中转地的航班编号、中转地、中转地到北京的航班编号。SELECT航班 1. 航班编号 , 航班 1. 目的地 , 航班 2. 航班编号FROM航班航班 1, 航班航班 2WHERE航班 1. 起飞地 = 广州 AND 航班 2. 目的地 = 北京 AND 航班 1. 目的地 =航班 2. 起飞地 ;试题三阅读以下说明,根据要求回答下列问题。 说明某电视台拟开发一套信息管理系统,以方便对全台的员工、栏目、广告和演播厅等进行管理。 需求分析 7系统需要维护全台员工的详细信息、栏目信息、广告信息和演播厅信息等。员工的信息主要包括:工号、姓名、性别、出生日期、电话和住址等,栏目信息主要包括:栏目名称、播出时间和时长等。广告信息主要包括:广告编号、价格等。演播厅信息包括:房间号、房间面积等。8电视台根据调度单来协调各档栏目、演播厅和场务。一个销售档栏目只会占用一个演播厅,但会使用多名场务来进行演出协调。演播厅和场务可以被多个栏目循环使用。9电视台根据栏目来插播广告。每档栏目可以插播多条广告,每条广告也可以在多档栏目中插播。10一档栏目可以有多名主持人,但一名主持人只能主持一档栏目。11一名编辑人员可以编辑多条广告,一条广告只能由一名编辑人员编辑。 概念模型设计 根据需求阶段收集的信息而设计的实体联系图( 不完整 ) 如图所示。. 逻辑结构设计 根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):演播厅 ( 房间号,房间面积 )栏目 ( 栏目名称,播出时间,时长)广告 ( 广告编号,销售价格, _)员工 ( 工号,姓名,性别,出生日期,电话,住址)主持人 ( 主持人工号, _)插播单 (_ ,播出时间 )调度单 (_)7、补充图中的联系和联系的类型。8、根据图,将逻辑结构设计阶段生成的关系模式中补充完整,并用下划线指出所在关系模式的主键。9、现需要记录广告商信息,增加广告商实体。一个广告商可以提供多条广告,一条广告只能由一个广告商提供。请根据该要求,对图进行修改,画出修改后的实体间联系和联系的类型。试题三7、这是一道要求读者掌握数据库的概念结构设计的综合分析题,本题的解答思路如下。仔细阅读题干给出的说明信息,由其中关键信息“ (3) 电视台根据栏目来插播广告。每档栏目可以插播多条广告, 每条广告也可以在多档栏目插播”等可知, 图中实体“广告”与实体“栏目”之间存在联系“插播”,其联系的类型为多对多 (m:n) 。基于题干给出的“ (4) 一档栏目可以有多个主持人,但一名主持人只能主持一档栏目”等关键信息可知,图中实体“栏目”与实体“主持人”之间存在联系“主持”,其联系的类型为一对多.(1:n) 。根据题干给出的关键信息“ (2) 电视台根据调度单来协调各档栏目、演播厅和场务。一个销售档栏目只会占用一个演播厅, 但会使用多名场务来进行演出协调。 演播厅和场务可以被多个栏目循环使用”等关键信息可知,图中实体“场务”与联系“调度”之间存在关联,其关联的类型为多(n) 。整理以上分析结果,结合图可得出完整的信息管理系统实体联系图,如图所示。8、(1) 编辑人员工号(2) 栏目名称(3) 栏目名称,广告编号(4) 栏目名称,房间号,场务工号广告 ( 广告编号,销售价格,编辑人员工号)主持人 ( 主持人工号,栏目名称 )插播单 ( 栏目名称,广告编号,播出时间)调度单 ( 栏目名称,房间号,场务工号)这是一道要求读者掌握数据库的逻辑结构设计的综合理解题,本题的解答思路如下。基于问题 1的分析结果,在图中实体“编辑人员”与实体“广告”之间存在联系“编辑”,其联系的类型为一对多 (1:n) 。结合题干说明信息中已给出的关系模式:员工( 工号,姓名,性别,出生日期,电话,住址 ) ,可知“广告”关系模式中需要加入一端实体的主键“编辑人员工号” ( 即空缺处所填写的内容 ) 。结合常识可知,属性“广告编号”唯一标识每一条“广告”的数据记录,因此它是“广告”关系模式的主键。同理,在图中实体“栏目”与实体“主持人”之间存在联系“主持”, 其联系的类型为一对多 (1:n) 。题干中已给出的关系模式:栏目 ( 栏目名称,播出时间,时长 ) ,可知“主持人”关系模式中需要加入一端实体的主键“栏目名称” ( 即空缺处所填写的内容 ) 。结合常识可知,属性“主持人工号”唯一标识每一条“主持人”的数据记录,因此它是“主持人”关系模式的主键。对于图中联系类型为多对多(m:n) 的“插播”联系,应将其转换成一个独立的关系模式,其属性为两端实体类型的主键加上联系类型自身的属性, 而该关系模式的主键为两端实体主键的组合。 因此空缺处应填入“栏目名称, 广告编号”。 属性“栏目名称”、 “广告编号”的组合是“插播单”关系模式的主键。对于图中联系类型为 1:m:n 的“调度”联系,应将其转换成一个独立的关系模式,其属性为三端实体类型的主键加上联系类型自身的属性, 而该关系模式的主键为三端实体主键的组合。 因此空缺处应填入“栏目名称,房间号,场务工号”。属性“栏目名称”、“房间号”、“场务工号”的组合是“调度”关系模式的主键。.9、这是一道要求读者掌握数据库的概念结构设计的综合应用题, 本题的解答思路如下: 如果需要广告商信息,则新增一个“广告商”实体, 而一个广告商可以提供多条广告, 一条广告只能由一个广告商提供,因此“广告商”和“广告”两个实体之间都存在联系“提供”, 其联系的类型都为一对多 (1:n) 。修改后的某电视台信息管理系统的实体联系图如图所示。试题四阅读以下说明,根据要求回答下列问题。 说明某水果零售超市拟开发一套信息系统, 对超市的顾客、 水果、员工、采购和销售信息进行管理。 需求分析 10水果零售超市实行会员制, 顾客需具有会员资格才能进行购物, 顾客需持所在单位出具的证明信才能办理会员资格,每位顾客具有唯一编号。11超市将采购员和导购员分成若干个小组, 每组人员负责指定的若干种水果的采购和导购。 每名采购员可采购指定给该组购买的水果; 每名导购员都可对顾客选购的本组内的各种水果进行计价和包装,并分别贴上打印条码。12顾客选购水果并计价完毕后进行结算, 生成结算单。 结算单包括流水号、 购买的各种水果信息和顾客信息等,每张结算单具有唯一的流水号。13超市在月底根据结算单对导购员进行绩效考核,根据采购情况对采购员进行考核,同时也根.据结算单对顾客消费情况进行会员积分。初步设计的数据库关系模式如下。顾客 ( 顾客编号,身份证号,姓名,性别,积分,单位名称,单位地址,单位电话)采购 ( 批次,水果名称,采购价格,采购数量,采购员编号)职责 ( 水果名称,采购员编号,导购员编号)结算单 ( 流水号,条码,水果名称,销售单价,数量,金额,导购员编号,顾客编号 ) 数据库关系模式关系模式的主要属性、含义及约束如表所示。表1 主要属性、含义及约束属性含义及约束条件顾客编号唯一地标识某位顾客单位地址和单位电话顾客的单位地址和电话由单位名称决定批次不同批次的水果,采购价格和数量也可能不同流水号每个结算单都有一个流水号条码购买的每种水果的信息“结算单”示例如表 2所示。表2 “结算单”示例流水号2013032200001顾客G2000102条码水果名称销售单价数量金额( 元)导购员A10001苹果5420D001A10013桔子4312D002B10005香蕉3515D003C10034葡萄3.51035D001E10323火龙果15230D001G10551梨4520D002总计13210、对于“顾客”关系模式,请回答以下问题:(1) 给出所有候选键。(2) 该关系模式可达到第几范式,用 60字以内的文字简要叙述理由。11、对于“结算单”关系模式,请回答以下问题:(1) 用 100字以内的文字简要说明它会产生什么问题。(2) 将其分解为第 3范式,分解后的关系名依次为:结算单 1,结算单 2,结算单 3,并用下划线标注分解后的各关系模式的主键。12、对于“职责”关系模式,请回答以下问题:(1) 它是否为第 4范式,用 100字以内的文字叙述理由。(2) 将其分解为第 4范式,分解后的关系名依次为:职责 1,职责 2。试题四10、(1) 顾客编号和身份证号(2) 可以达到第 2范式理由:在“顾客”关系模式中,存在以下函数依赖:“单位名称单位地址,单位电话”,存在非主属性对键的传递依赖,所以“顾客”关系模式可以达到第2范式,但不.满足第 3范式这是一道要求读者掌握数据库关系模式规范化理论中,非主属性和 3NF范式的综合分析题,本题的解答思路如下。(1) 依题意,由“顾客”关系模式和题干给出的关键信息“每位顾客具有唯一编号”等可知,属性“顾客编号”是“顾客”关系模式的主键;而属性“身份证号”也是该关系模式的决定因素之一,因此它们都是候选键的属性。(2) 结合表 1中的属性“单位地址和单位电话”的约束条件“顾客的单位地址和电话由单位名称决定”等关键信息可知, 在“顾客”关系模式中, 存在“单位名称 ( 单位地址,单位电话 ) ”的函数依赖关系。根据3NF的要求:每一个非主属性既不部分依赖于码,也不传递依赖于码。而“顾客”关系模式存在非主属性对码的传递依赖,因此它不能满足3NF,但可以达到 2NF。11、(1) 根据“结算单”关系模式,可知其键为 ( 流水号,条码 ) ,而又存在部分函数依赖:“条码水果名称,销售单价,数量,金额,导购员编号”根据第 2范式的要求:不存在非主属性对键的部分依赖,所以“结算单”关系模式不满足第 2 范式,会造成插入异常、删除异常和修改异常(2) 对“结算单”关系模式进行分解后的关系模式及主键如下:结算单 1( 流水号 , 条码 )结算单 2( 流水号 , 顾客编号 )结算单 3( 条码,水果名称,销售单价,数量,金额,导购员编号 )这是一道要求读者掌握数据库关系模式规范化理论中2NF和3NF的综合应用题,本题的解答思路如下。(1) 由“结算单”关系模式、题干 ( 或表 1) 中给出的关键信息“ (3) 每张结算单具有唯一的流水号”、表 1中“条码”属性的约束条件“购买的每种水果的信息”和表2的示例等关键信息可知,属性“流水号,条码”是该关系模式的候选键。“结算单”关系模式存在部分函数依赖:流水号顾客编号条码水果名称,销售单价,数量,金额,导购员编号根据第 2范式 (2NF) 的要求:不存在非主属性对码的部分依赖。 而“结算单”关系模式存在非主属性对码的部分依赖,因此它不属于 2NF,会造成插入异常、删除异常和修改复杂 ( 或修改异常 ) 等问题。(2) 根据 3NF的要求和“结算单”关系模式的函数依赖关系, 对“结算单”关系模式进行如下分解,以满足 3NF的要求。结算单 1( 流水号 , 条码 )结算单 2( 流水号 , 顾客编号 )结算单 3( 条码,水果名称,销售单价,数量,金额,导购员编号 )其中,带下划实线的属性为分解后的各关系模式对应的主键,带波浪线的属性为外键。这3个关系模式中的每一个非主属性既不部分依赖于码,也不传递依赖于码,因此满足3NF的要求。12、(1) 不属于第 4范式。根据“职责”关系模式的定义可知:其主键为“水果名称,采购员编号,导购员编号”,存在多值依赖:水果名称采购员编号水果名称导购员编号根据第 4范式的要求,不允许存在非平凡的多值依赖, 因此,“职责”关系模式不满足第4范式。(2) 对“职责”关系模式进行分解后的关系模式如下:职责 1( 水果名称 , 采购员编号 )职责 2( 水果名称 , 导购员编号 )这是一道要求读者掌握关系模式规范化理论中4NF的综合分析题,本题解答思路如下。(1) 由“职责”关系模式和题干中“ (2) 超市将采购员和导购员分成若干个小组, 每组人员负责指定的若干种水果的采购和导购 ”等关键信息可知, 属性“水果名称,采购员编号,导购员编号”.是该关系模式的主键。“职责”关系模式存在多值依赖:水果名称采购员编号水果名称导购员编号根据第 4范式的要求:不允许有非平凡且非函数依赖的多值依赖,因此“职责”关系模式不满足 4NF。(2) 根据 4NF的要求和“职责”关系模式的函数依赖,对该关系模式进行如下分解,以满足4NF的要求。职责 1( 水果名称 , 采购员编号 )职责 2( 水果名称 , 采购员编号 )其中,带下划线的属性为相应关系模式的主键。试题五阅读以下说明,根据要求回答下列问题。 说明某连锁酒店提供网上预订房间业务,流程如下:13客户查询指定日期内所有类别的空余房间数,系统显示空房表 ( 日期,房间类别, 数量 ) 中的信息。14客户输入预订的起始日期、结束日期、房间类别和数量,并提交。15系统将用户提交的信息写入预订表 ( 身份证号,起始日期,结束日期,房间类别,数量 ) ,并修改空房表的相关数据。针对上述业务流程,回答下列问题。13、如果两个用户同时查询相同日期和房间类别的空房数量,得到的空房数量为 1,并且这两个用户又同时要求预订,可能会产生什么结果,请用 100字以内的文字简要叙述。14、引入如下伪指令: 将预订过程作为一个事务, 将查询和修改空房表的操作分别记为 RA.和 W(A,x) ,插入预订表的操作记为 W(B,a) ,其中 x代表空余房间数, a代表预订房间数,则事务的伪指令序列为:x=RA.,W(A,x-a) ,W(B, a) 。在并发操作的情况下,若客户1、客户 2同时预订相同类别的房间时,可能出现的执行序列为:x1=RA., x2=RA.,W(A,x1-a1) ,W(B1,a1) , W(A,x2-a2) ,W(B2,a2) 。(1) 此时会出现什么问题,请用 100字以内的文字简要叙述。(2) 为了解决上述问题, 引入共享锁指令 SLock(X) 和独占锁指令 XLock(X) 对数据 X进行加锁,解锁指令 Unlock(X) 对数据 X进行解锁,请补充上述执行序列,使其满足 2PL协议,不产生死锁且持有锁的时间最短。15、下面是实现预订业务的程序,请补全空缺处的代码。其中主变量“:Cid ”、“ :Bdate ”、“:Edate ”、“:Rtype ”、“:Num”分别代表身份证号、 起始日期、结束日期、房间类别和订房数量。SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;UPDATE空房表SET 数量 =数量 -:NumWHERE _;if errorthenROLLBACK; return -1;INSERT INTO 预订表 VALUES (:cid, :Bdate, :Edate, :Rtype, :Num);if error thenROLLBACK; return -2;_;试题五13、同时预订时,可能会产生一个客户订不到或者把同一房订给两个客户依题意,如果两个用户同时要求预订相同日期和相同类别的同一个房间, 则可能会产生一个客户订不到房间或者把同一房间预订给两个客户的冲突现象。.14、(1) 出现问题:丢失修改,客户 1预订 a1数量房间后,对空房数量的修改被 T2的修改覆盖,造成数据不一致。(2)XLOCK(A),x1=R(A),W(A,x1-a1),XLOCK(B),UNLOCK(A),W(B1,a1),UNLOCK(B),XLOCK(A),x2=R(A),W(A,x2-a2),XLOCK(B),UNLOCK(A), W(B2,a2),UNLOCK(B)若对并发事务的指令交叉执行不加以控制, 则会使每个事务的执行结果相互干扰, 破坏事务的隔离性,从而造成数据库的不一致。 本试题中,客户 1预订 a1数量房间后, 对空房数量的修改可能被客户 2的修改所覆盖,造成不能体现出客户 1已预订的房间数量。该现象属于丢失修改造成的数据库不一致性。在并发状态下, 可能会相互干扰破坏事务的 ACID属性,加锁机制是保障事务正确执行的一种机制。2PL协议能够保证事务在并发状态下调度的正确性, 即可串行化的调度。 针对题干所给出的客户 f 的房间预订伪指令序列: x=R(A),W(A,x-a) ,W(B, a) ,需要在修改房间数量之前加 XLock() 指令,并保证读 / 写锁不交叉,即确保客户 1释放 A上的锁之后客户 2才能执行加锁操作。 重写后的房间预订伪指令序列如下。XLOCK(A),x1=R(A),W(A,x1-a1),XLOCK(B),UNLOCK(A),W(B1,a1),UNLOCK(B),XLOCK(A), x2=R(A),W(A,x2-a2),XLOCK(B),UNLOCK(A),W(B2,a2),UNLOCK(B)15、房间类别 =:Rtype AND 日期 BETWEEN :Bdate AND :EdateCOMMIT :retum 0;SQL语句“ SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;”是SQL提供的事务隔离级别之一。它表示只允许事务读已提交的数据,并且在两次读同一数据时不允许其他事务修改此数据。依题意,结合题干给出的关键信息“(1) 客户查询指定日期内所有类别的空余房间数,系统显示空房表( 日期,房间类别,数量 ) 中的信息”可得,空缺处应填入“房间类别=:Rtype AND 日期 BETWEEN :BdateAND :Edate”。在程序中,事务是以 COMMIT语句或 ROLLBACK语句结束。结合该程序中已给出的代码“iferrorthen ROLLBACK; return -1;) ”和“ if error then ROLLBACK; return- 2; ”可得,空缺处应填入“ COMMIT; return 0;”。.答案 :试题一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活动请求23.2 或确定活动时间范围捐赠请求2( 可不填 )3.1.3所募集捐赠 ( 或3.1.3或募集2( 可不填 )所募集资金或所3.1.3或募集2( 可不填 )募集物品3.1.3或募集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的名称是“已处理捐赠表”。试题二4、PRIMARY KEY(或 NOT NULL UNIQUE)CHECK(购票金额 0)FOREIGN KEY 身(份证号 ) REFERENCES旅客 ( 身份证号 )FOREIGN KEY 航(班编号 ) REFERENCES航班 ( 航班编号 )在创建“购票”关系模式的SQL语句时,由于属性“购票单号”为“购票”关系模式的主键,即不能为空且唯一标识一条数据记录,因此空缺处需要填入“ PRIMARYKEY(或 NOTNULLUNIQUE,或 NOTNULL PRIMARY KEY)”对该属性进行主键约束。结合题干给出的关键信息“购票金额大于零”可知, 空缺处应填入“ CHECK(购票金额 0) ”对属性“购票金额”进行约束。由于属性“身份证号”、“航班编号”是“购票”关系模式的外键,因此空缺处需要使用 FOREIGN KEY对这两个属性进行外键约束,即应填入“ FOREIGN KEY(身份证号 )REFERENCES旅客 ( 身份证号 ) ”、“ FOREIGN KEY(航班编号 )REFERENCES航班 ( 航班编号 ) ”。5、票价 * 折扣 *VIP 折扣航班 . 航班编号 =折扣 . 航班编号INSERT购票VIP折扣 =vip_value(nrow.身份证号 )旅客 . 身份证号 =nrow. 身份证号(1) 基于题干给出的关键信息“旅客购买机票的购票金额计算公式为:票价折扣VIP折扣”可知,( 空缺处对应填入 INSERT INTO语句中“购票金额”的计算公式,即“票价* 折扣 *VIP 折扣”。结合题干给出的“其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票后被修改”等关键信息可知,该 SELECT查询语句中将涉及到“航班”、“折扣”两个关系模式,因此空缺处应对这二者进行关联,即应填入“航班. 航班编号 =折扣 . 航班编号”。(2) 使用 T-SQL语句来创建触发器的基本语句如下。create trigger trigger_name on table_name | view_name for | After | Instead of insert ,update , delete as sql_statement在“购票”关系模式中插入一条数据记录时,触发器应能够自动执行,因此需要创建基于INSERT类型的触发器,即空缺处应依次填入“ INSERT”、“购票”。.根据题干给出的“ VIP折扣值的计算由函数float vip_value(char18身份证号 ) 完成”等关键信息可知,空缺处应填入的触发器执行动作是“VIP折扣 =vip_value(nrow.身份证号 ) ”。空缺处应添加表的连接条件“旅客. 身份证号 =nrow. 身份证号”。6、旅客 . 身份证号 =购票 . 身份证号 AND搭乘日期 BETWEEN 2012/1/1 AND 2012/12/31旅客 . 身份证号 , 姓名 HAVING SUM(购票金额 ) =10000 SUM(购票金额 ) DESC航班 1. 航班编号 , 航班 1. 目的地 , 航班 2. 航班编号航班 1. 起飞地 = 广州 AND 航班 2. 目的地 = 北京 AND 航班 1. 目的地 =航班 2. 起飞地 ;(1)(1) 查询搭乘日期在 2012年1月1日至 2012年 12月31日之间,且合计购票金额大于等于 10000元的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。SELECT旅客 . 身份证号 , 姓名 ,SUM(购票金额 )FROM旅客 , 购票WHERE旅客 . 身份证号 =购票 . 身份证号 AND搭乘日期 BETWEEN 2012/1/1 AND 2012/12/31GROUP BY旅客 . 身份证号 , 姓名 HAVING SUM(购票金额 ) =10000; ORDER BY SUM(购票金额 ) DESC;(2) 经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。查询从广州到北京,经过一次中转的所有航班对,输出广州到中转地的航班编号、中转地、中转地到北京的航班编号。SELECT航班 1. 航班编号 , 航班 1. 目的地
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!