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