1、2011年上半年软件水平考试(中级)数据库系统工程师下午(应用技术)试题真题试卷及答案与解析 一、试题一( 15分) 0 阅读下列说明和图,回答问题 1至问题 4,将解答填入对应栏内。 说明 某医院欲开发病人监控系统。该系统通过各种设备监控病人的生命特征,并在生命特征异常时向医生和护理人员报警。该系统的主要功能如下: (1)本地监控:定期获取病人的生命特征,如体温、血压、心率等数据。 (2)格式化生命特征:对病人的各项重要生命特征数据进行格式化,然后存入日志文件并检查生命特征。 (3)检查生命特征:将格式 化后的生命特征与生命特征范围文件中预设的正常范围进行比较。如果超出了预设范围,系统就发送
2、一条警告信息给医生和护理人员。 (4)维护生命特征范围:医生在必要时 (如,新的研究结果出现时 )添加或更新生命特征值的正常范围。 (5)提取报告:在医生或护理人员请求病人生命特征报告时,从日志文件中获取病人生命特征生成特征报告,并返回给请求者。 (6)生成病历:根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存入病历文件。 (7)查询病历:根据医生的病历查询请求,查询病历文件,给医生返回病历报告。 (8)生成治疗意见:根据日志文件中的生命特征和病历,医生给出治疗意见,如处方等,并存入治疗意见文件。 (9)查询治疗意见:医生和护理人员查询治疗意见,据此对病人进行治疗。 现采用结构化
3、方法对病人监控系统进行分析与设计,获得如图 11所示的项层数据流图和图 1-2所示的 0层数据流图。1 使用说明中的词语,给出图 1-1中的实体 E1 E3的名称。 2 使用说明中的词语,给出图 1-2中的数据存储 D1 D4的名称。 3 图 1-2中缺失了 4条数据流,使用说明、图 1-1和图 1-2中的术语,给出数据流的名称及其起点和 终点。 4 说明实体 E1和 E3之间可否有数据流,并解释其原因。 二、试题二( 15分) 4 阅读下列说明,回答问题 1至问题 3,将解答填入对应栏内。 说明 某法院要开发一个诉讼案件信息处理系统,该信息系统的部分关系模式如下: 职工 (职工编号,姓名,岗
4、位 ) 律师 (律师编号,姓名 ) 被告 (被告编号,姓名,地址 ) 案件 (案件编号,案件类型,案件描述,被告,律师,主审法官,立案日期,状态,结案日期,结案摘要 ) 审理 (审理编号,案件编号,审理日期,摘要 ) 有关 关系模式的属性及相关说明如下: (1)职工关系模式的岗位有 “法官 ”、 “书记员 ”和 “其他 ”。 (2)诉讼立案后,即在案件关系中插入一条相应记录。案件关系模式的状态有 “待处理 ”、 “审理中 ”、 “结案 ”和 “撤销 ”,一个案件开始立案时其案件状态为 “待处理 ”。 (3)案件关系模式的案件类型有 “偷窃 ”、 “纵火 ”等。 (4)一个案件自立案到结案的整个
5、过程由一位法官和一位律师负责,一个案件通常经过一次到多次审理。 5 假设案件编号唯一标识一个案件,且立案日期小于等于结案日期。请将如下创建案件关系的 SQL语句的空缺部分补充完整。 CREATE TABLE案件 ( 案件编号 CHAR(6) (a) , 案件类型 VARCHAR(10), 案件描述 VARCHAR(200), 立案日期 DATE, 被告 VARCHAR(6)REFERENCES被告 (被告编号 ), 律师 VARCHAR(6)REFERENCES律师 (律师编号 ), 主审法官 VARCHAR(6) (b) , 状态 VARCHAR(6) (c) DEFAULT 待处理 , 结
6、案日期 DATE, 结案摘要 VARCHAR(200), (D) ; 5 请完成下列查询的 SQL语句。 (1)查询当前待处理的诉讼案件,显示案件的案件编号、立案日期、被告姓名、被告地址、案件描述、律师姓名和主审法官姓名。 SELECT案件编号 , 立案日期 , 被告 .姓名, AS 被告姓名 , 地址 AS 被告地址 , 案件描述 , 律师 .姓名 AS 律师姓名 , (e) FROM (f) WHERE 案件 .被告 =被告 .被告编号 AND 案件 .律师 =律师 .律师编号 AND (g) ; (2)查询 2009年立案的各类案件数,并按案件数降序排序。 (日期格式举例: 2009年
7、1月 1日表示为 01-JAN-2009, 2009年 12月 31日表示为 31-DEC-2009) SELECT 类型, count(*) AS 案件数 FROM 案件 WHERE (h) d GROUP BY 类型 (i) ; (3)查询立案次数超过 5次的被告姓名和地址。 SELECT 姓名 , 地址 , count(*) FROM 案件 , 被告 WHERE (j) d GROUP BY (k) d (l) ; 6 (e) 7 (f) 8 (g) 9 (h) 10 (i) 11 (j) 12 (k) 13 (l) 13 当插入一个审理记录时,检查案件的状态,若状态为 “未处理 ”,则
8、将其修改为“审理中 ”。下面是用触发器实现该需求的 SQL语句,请将空缺部分补充完整。 CREATE TRIGGER 审理 TRIGGER AFTER (m) ON 审理 REFERENCING new row AS nrow FOR EACH row WHEN 未处理 = (SELECT 状态 FROM 案件 WHERE 案件编号 =nrow.案件编号 ) BEGIN UPDATE 案件 (n) d WHERE (o) ; END 14 (m) 15 (n) 16 (o) 三、试题三( 15分) 16 阅读下列说明,回答问题 1至问题 3,将解答填入对应栏内。 说明 某服装销售公司拟开发一套
9、服装采购管理系统,以方便对服装采购和 库存进行管理。 需求分析 (1)采购系统需要维护服装信息及服装在仓库中的存放情况。系统按服装的销售种类记录服装信息。服装信息主要包括:服装编码、服装描述、服装类型、销售价格、尺码和面料,其中,服装类型为销售分类,服装按销售分类编码。仓库信息主要包括:仓库编码、仓库位置、仓库容量和库管员。系统记录库管员的库管员编码、姓名和级别。一个库管员可以管理多个仓库,每个仓库有一名库管员。一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。 (2)当库管员发现有一类或者多类服装缺货时,需要生成采购订单。一个采购 订单可以包含多类服装。每类服装可由多个不同的供应商供
10、应,但具有相同的服装编码。采购订单主要记录订单编码、订货日期和应到货日期,并需详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。 (3)系统需记录每类服装的各个供应商信息和供应情况。供应商信息包括:供应商编码、供应商名称、地址、企业法人和联系电话。供应情况记录供应商所供应服装的服装类型和服装质量等级。一个供应商可以供应多类服装,一类服装可由多个供应商供应。库管员根据入库时的服装质量情况,设定或修改每个供应商所供应的每类服装的服装质量等级,用以作为 后续采购服装时,选择供应商的参考标准。 概念模型设计 根据需求阶段收集的信息,设计的实体联系图 (不完整 )如图 3-1所示。逻辑结构设计
11、 根据概念模型设计阶段完成的实体联系图,得出如下关系模式 (不完整 ): 库管员 (1),姓名,级别 ) 仓库信息 (2),仓库位置,仓库容量 ) 服装 (服装编码,服装描述,服装类型,尺码,面料,销售价格 ) 供应商 (3),供应商名称,地址,联系电话,企业法人 ) 供应情况 (4),服装质量等级 ) 采购订单 (5) 采购订单明细 (6) 17 补充图 3-1中的联系和联系 的类型。 18 根据图 3-1,将逻辑结构设计阶段生成的关系模式中的空 (1) (6)补充完整。对所有关系模式,用下划线指出各关系模式的主键。 19 如果库管员定期需要轮流对所有仓库中的服装质量进行抽查,对每个仓库中的
12、每一类被抽查服装需要记录一条抽查结果,并且需要记录抽查的时间和负责抽查的库管员。请根据该要求,对图 3-1进行修改,画出修改后的实体间联系和联系的类型。 四、试题四( 15分) 19 阅读下列说明,回答问题 1至问题 3,将解答填入对应栏内。 说明 某学校拟开发一套校友捐赠管理系统,以便对 校友的捐赠资金进行管理。 需求分析 校友可以向学校提出捐赠申请,说明捐赠的金额、捐赠类型和使用方式。捐赠类型包括一次性捐赠和周期性捐赠。捐赠的使用方式分为两种:一种用于资助个人,即受益人为多名学生或老师,主要用于奖学金、奖教金和助学金等;另一种用于资助捐赠项目,即资助已有的捐赠项目和设立新的捐赠项目,主要用
13、于改善教学设施、实验室建设和设备购买等。捐赠项目由捐赠理事建立,一个捐赠项目可以涉及多个受益单位,每个单位在该项目中有确定的受益比例。由捐赠理事为项目中的每个单位指定一个项目负责人,并指定每个单位受益 比例。每个单位的受益比例是指在一个捐赠项目中的每个单位所应得的金额占该捐赠项目总受益金额的比例。一个捐赠项目可以由多个捐赠来资助,一个捐赠也可以资助多个捐赠项目。由捐赠理事将一个捐赠的捐赠金额分配给所资助的多个捐赠项目,并指定给每个捐赠项目的具体的捐赠金额。 初步设计了校友捐赠信息数据库,其关系模式如图 4-1所示。关系模式的主要属性、含义及约束如表 4-1所示。20 对关系 “校友信息 ”,请
14、回答以下问题: (1)列举出所有候选键的属性。 (2)关系 “校友信息 ”可达到第几范式,用 60字以内 文字简要叙述理由。 21 对关系 “捐赠信息 ”,请回答以下问题: (1)针对 “捐赠信息 ”关系,用 100字以内文字简要说明会产生什么问题。 (2)把 “捐赠信息 ”分解为第三范式,分解后的关系名依次为:捐赠信息 1,捐赠信息 2, (3)列出 “捐赠信息 ”关系修正后的各关系模式的主键。 22 对关系 “项目受益情况 ”,请回答以下问题: (1)关系 “项目受益情况 ”是不是第四范式,用 100字以内文字叙述理由。 (2)把 “项目受益情况 ”分解为第四范式,分解后的关系名依次为:项
15、目受益情况1,项目受益情况 2, 五、试题五( 15分) 22 阅读下列说明,回答问题 1至问题 3,将解答填入对应栏内。 说明 某网上商品销售系统的业务流程如下: (1)将客户的订单记录 (订单号,客户 ID,商品 ID,购买数量 )写入订单表; (2)将库存表 (商品 ID,库存量 )中订购商品的库存量减去该商品的购买数量。 针对上述业务流程,完成下列问题: 23 假设库存量有大于等于 0的约束,可能出现如下情况:当订单记录写入订单表后,修改库存表时因违法约束而无法执行,应如何处理 ?(100字以内 ) 24 引入如下伪指令:将商品 A的订单记录插入订单表记为 I(A);读取商品 A的库存
16、量到变量 x,记为 x=R(A);变量 x值写入商品 A中的库存量,记为 W(A, x)。则客户 i的销售业务伪指令序列为: Ii(A), xi=Ri(A), xi=xi-ai, Wi(A, xi)。其中 ai为商品的购买数量。 假设当前库存量足够,不考虑发生修改后库存量小于 0的情况。若客户 1、客户 2同时购买同一种商品时,可能山现的执行序列为: I1(A),I2(A), x1=R1(A), x2=R2(A), x1=x1-a1, W1(A, x1), x2=x2-a2, W2(A, x2)。 (1)此时会出现什么问题 ?(100字以内 ) (2)为了解决上述问题,引入共享锁指令 SLoc
17、k(A)和独占锁指令 XLock(A)对数据 A进行加锁,解锁指令 Unlock(A)对数据 A进行解锁,客户 i的加锁指令用 SLocki(A)表示,其他类同。插入订单表的操作不需要引入锁指令。请补充上述执行序列,使其满足 2PL协议,并使持有锁的时间最短。 25 下面是用 E-SQL实现的销售业务程序的一部分,请补全空缺处的代码。 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; INSERT INTO 订单表 VALUES (: OID,: CID,: MID,: qty); if error then ROLLBACK; (a) ; UP
18、DATE 库存表 SET 库存量 =库存量 -: qty WHERE (b) ; if error then ROLLBACK; return; (c) ; 2011年上半年软件水平考试(中级)数据库系统工程师下午(应用 技术)试题真题试卷答案与解析 一、试题一( 15分) 1 【正确答案】 E1:病人 E2:护理人员 E3:医生 【试题解析】 本题考查数据流图 (DFD)应用于采用结构化方法进行系统分析与设计,是比较传统的题目,要求考生细心分析题目中所描述的内容。 DFD是一种便于用户理解、分析系统数据流程的图形化建模工具,是系统逻辑模型的重要组成部分。 本问题考查项层 DFD。顶层 DFD
19、一般用来确定系统边界,将待开发系统看作一个加工,因此图中只有唯一的一个处理和一些外部实体,以及这两者之间的输 入输出数据流。题目要求根据描述来确定图中的外部实体。分析题目中的描述,并结合已经在顶层数据流图中给出的数据流进行分析。从中可以看出,与系统的交互者包括病人、医生和医护人员。其中,本地监控定期获取病人的生命特征,病人是生命特征数据来源,医生和护理人员会得到相关报告的结果,如请求病人生命特征报告,并获得相关报告。医生还需要在必要时添加或更新生命特征范围。对应图 10中数据流和实体的对应关系,可知 E1为病人, E2为护理人员, E3为医生。 2 【正确答案】 D1:生命特征范围文件 D2:
20、日志文件 D3:病历文件 D4:治疗意见文件 【试题解析】 本问题考查 0层 DFD中数据存储的确定。根据说明中的描述: (2)格式化生命特征:对病人的各项重要生命特征数据进行格式化,然后存入日志文件并检查生命特征; (4)维护生命特征范围:医生在必要时 (如,新的研究结果出现时 )添加或更新生命特征值的正常范围; (6)生成病历:根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存入病历文件; (8)生成治疗意见:根据日志文件中的生命特征和病历,医生给出治疗意见,如处方等,并存入治疗意见文件。因此, D1为生命特征 范围文件, D2为日志文件, D3为病例文件, D4为治疗意见文件
21、。 3 【正确答案】 【试题解析】 本问题考查 0层 DFD中缺失的处理和数据流。从说明中的描述及图 1-2可知,本地监控之后要对重要生命特征存储日志文件进行格式化,所以在本地监控和格式化生命特征之间缺少了数据流重要生命特征;检查生命特征是对格式化后的生命特征进行检查,所以在格式化生命特征和检查生命特征之间缺少了数据流格式化后的生命特征;根据日志文件中的生命特征,医生对病人的病情进行描述,形成病历存入病历文件 . 4 【正确答案】 E1和 E3之间不可以有数据流,因为数据流的起点和终点中必须有一个是加工 (处理 )。 【试题解析】 E1和 E3之间不可以有数据流,因为数据流的起点和终点中必须有
22、一个是加工 (处理 )。 本问题考查绘制 DFD时的注意事项。在 DFD中,每条数据流的起点和终点之一必须是加工 (处理 )。本题中,医生和护理人员根据查询到的治疗意见对病人进行治疗属于系统之外的行为,所以两个实体之间不可以有数据流。 二、试题二( 15分) 5 【正确答案】 (a)PRIMARY KEY或 NOT NULL UNIQUE (b)REFERENCES职工 (职工编号 ) (c/)CHECK VALUES IN(待处理 , 审理中 , 结案 , 撤销 ) (d)CHECK(立案日期 =结案日期 ) 【试题解析】 本题考查 SQL语言,是比较传统的题目,要求考生细心分析题目中所描述
23、的内容。 本问题考查 SQL中的数据定义语言 DDL和完整性约束。完整性约束包括三类:实体完整性、参照完整性和用户定义的完整性。实体完整性约束规定关系的主属性不能取空值,关系模型中以主码作为唯一性标识;参照完整性约束规定若属性(或属性组 )A是关系 R上的 主码, B是关系 S上的外码, A与 B相对应 (来自相同的域 ),则 B取值为空或者来自于 R上的某个 A的值;用户定义的完整性约束是针对具体的数据库应用而定义的,它反映该应用所涉及的数据必须满足用户定义的语义要求。 (a)考查实体完整性约束,案件编号是案件关系模式的主码,用关键字PRIMARY KEY或者 NOT NULL UNIOUE
24、表示。 (b)考查参照完整性约束,主审法官属性参照职工关系模式中的职工编号属性,由于这两个属性名称不同,因此用 REFERENCES职工 (职工编号 )表示,此处不能省略职工编号。 (c)、 (d)考查用户定义的完整性约束。 (c)是在状态属性上定义列级约束,用CHECK VALUES IN(待处理 , 审理中 , 结案 , 撤销 )表示。 (d)在立案日期和结案日期上定义约束,用 CHECK(立案日期 =结案日期 )表示。 6 【正确答案】 姓名 AS主审法官姓名 7 【正确答案】 案件,被告,律师,职工 (关系模式的顺序无关 ) 8 【正确答案】 主审法官 =职工 .职工编号 9 【正确答
25、案】 立案日期 BETWEEN 01-JAN-2009 AND 31-DEC-2009 或者立案日期 =01-JAN-2009 AND 立案日期 =31-DEC-2009 10 【正确答案】 ORDER BY案件数 DESC 11 【正确答案】 被告 =被告 .被告编号 12 【正确答案】 姓名,地址 13 【正确答案】 HAVING count(*) 5 【试题解析】 本问题考查 SQL中的数据操作语言 DML。 (1)考查别名和连接查询条件。 (e)处考核别名定义,用 AS关键字,且别名根据题干给出,应填 “职工姓名 AS主审法官姓名 ”; (f)处考查该查询涉及到的关系 模式,此处应涉及
26、到案件、被告、律师和职工 4个关系模式,在 FROM子句中关系模式是顺序无关的; (g)处考核案件关系模式和职工关系模式的连接条件,即 “案件 .主审法官 =职工 .职工编号 ”。 (2)考查日期属性并对查询结果进行分组和排序。 (h)处主要考核日期作为条件属性的语法,题干中已经给出日期格式的提示。在两个日期之间的时间的语法可以用 BETWEENAND ,也可以用 =,因此,此处可以填 “立案日期BETWEEN 01-JAN-2009 AND 31-DEC-2009“或者 “立案日期 =01-JAN-2009 AND 立案日期 =31-DEC.2009“; (i)处考核查询结果的排序,用 “O
27、RDER BY 案件数 DESC”表示,其中的 DESC关键字不能省略。在 ORDER BY子句中,若不用表示升序的关键字 ASC或表示降序的关键字 DESC表示,则默认为升序排序。 (3)考查对查询结果进行分组,并指定满足条件的分组才能输出。 (i)处考核两个关系模式的连接关系,应填 “案件 .被告 =被告 .被告编号 ”; (k)处考核分组,此处填 “姓名,地址 ”,不能仅填姓名或者地址; (1)处考核分组条件,用 HAVING关键字,应填 “HAVING count(*) 5”。 14 【正确答案】 INSERT 15 【正确答案】 SET状态 =审理中 16 【正确答案】 案件编号 =
28、nrow案件编号 【试题解析】 本问题考查触发器。 触发器是一个能由系统自动执行对数据库修改的语句。一个触发器由事件、条件和动态三部分组成:事件即对数据库的插入、删除和修改等操作。触发器在这些事件发生时,将开始工作;条件是指触发器将测试条件是否成立,若成立就执行相应的动作,否则就什么也不做;动态是指若触发器测 试满足预定的条件,那么就由数据库管理系统执行这些动作。本题首先定义触发器的事件,即对审理关系模式插入后激活触发器。接下来定义触发器的动作,即修改案件关系模式的状态为 “审理中 ”,测试条件为若该案件原来状态为 “待处理 ”,需要关联的两个关系模式是案件和审理。 三、试题三( 15分) 1
29、7 【正确答案】 【试题解析】 本题考查数据库设计,属于比较传统的题目,考查点也与往年类似。 本问题考查数据库的概念结构设计,题目要求补充完整实体联系图中的联系和联系的类型。 根据题目的需求描述可知,一个库管 员可以管理多个仓库,每个仓库有一名库管员。所以,仓库实体和库管员实体之间存在 “管理 ”联系,联系的类型为多对一(*:1)。 根据题目的需求描述可知,一个仓库中可以存放多类服装,一类服装可能存放在多个仓库中。所以,仓库实体和服装实体之间存在 “存放 ”联系,联系的类型为多对多 (*:*)。 根据题目的需求描述可知,一个采购订单可以包含多类服装,每类服装可由多个不同的供应商供应。所以,采购
30、订单实体与服装实体和供应商实体三者之间存在“采购 ”联系,三者之间联系的类型为多对多对多 (*:*:*)。 根据题目的 需求描述可知,一个供应商可以供应多类服装,一类服装可由多个供应商供应。所以,供应商实体和服装实体之间存在 “供应 ”联系,联系的类型为多对多 (*:*)。 18 【正确答案】 (1)仓库编码,库管员编码 (2)供应商编码,服装编码 (3)订单编码,订货日期,应到货日期 (4)订单编码,服装编码,供应商编码,数量,采购价格 【试题解析】 本问题考查数据库的逻辑结构设计,题目要求补充完整各关系模式,并给出各关系模式的主键。 根据实体联系图和需求描述,系统记录库管员的库编码、姓名和
31、级别 。所以,对于 “库管员 ”关系模式,需补充属性 “库管员编码 ”。 根据实体联系图和需求描述,仓库信息主要包括:仓库编码、仓库位置、仓库容量和库管员。对于 “仓库信息 ”关系模式,由于仓库实体与库管员实体有多对一联系,需记录对应的库管员,并且需补充属性 仓库编码。因此, “仓库信息 ”关系模式,需补充属性 “仓库编码 ”和 “库管员编码 ”。 根据实体联系图和需求描述,供应商信息包括:供应商编码、供应商名称、地址、企业法人和联系电话。所以,对于 “供应商 ”关系模式,需补充属性 “供应商编码 ”。 根据实体联系图和需求 描述, “供应情况 ”关系模式需记录供应商和服装的多对多联系,即一个
32、供应商可以供应多类服装,一类服装可由多个供应商供应。所以,对于 “供应商 ”关系模式,需补充属性 “供应商编码 ”和 “服装编码 ”。 根据实体联系图和需求描述,采购订单主要记录订单编码、订货日期和应到货日期。所以,对于 “采购订单 ”关系模式需补充属性:订单编码,订货日期,应到货日期。由于采购订单还需详细记录所采购的每类服装的数量、采购价格和对应的多个供应商。因此, “采购订单明细 ”关系模式,需记录采购订单实体与服装实体和供应商实体三者之间存在的多对多对 多联系。对于 “采购订单明细 ”关系模式,需补充属性 “订单编码,服装编码,供应商编码,数量,采购价格 ”。 19 【正确答案】 【试题
33、解析】 本问题考查的是数据库的概念结构设计,根据新增的需求增加实体联系图中的实体的联系和联系的类型。 根据问题描述,多个库管员需对每个仓库中的每一类被抽查服装记录一条抽查结果。则须在库管员实体与仓库实体和服装实体三者之间的存在 “抽查 ”联系,联系的类型是多对多对多 (*:*:*)。 四、试题四( 15分) 20 【正确答案】 (1)“校友编号 ”和 “身份证号 ”。 (2)“校友信息 ”关系模式可以达到第二范式,不满足第三范式。 由于 “校友信息 ”关系模式的主键是 “校友编号 ”,但又包含函数依赖: 班级 院系,入学年份 不满足第三范式的要求,即存在非主属性对码的传递依赖。 【试题解析】
34、本题考查数据库理论的规范化,属于比较传统的题目,考查点也与往年类似。 本问题考查非主属性和第三范式。 根据 “校友信息 ”关系模式可知, “校友编号 ”和 “身份证号 ”都是校友信息的决定因素,因此都是候选键的属性。 根据第三范式的要求:每一个非主属性既不部分 依赖于码也不传递依赖于码。 根据 “校友信息 ”关系模式,其中存在以下函数依赖: 班级 院系,入学年份 而由于 “校友信息 ”关系模式的主键是 “校友编号 ”,因而,存在非主属性对码的传递依赖。所以, “校友信息 ”关系模式可以达到第二范式,但不满足第三范式。 21 【正确答案】 (1)“捐赠信息 ”关系不满足第二范式,即非主属性不完全
35、依赖于码。 (2)会造成:插入异常、删除异常和修改复杂 (或修改异常 )。 (3)分解后的关系模式如下: 捐赠信息 1(捐赠编号,捐赠校友,捐赠时间,捐赠金额 ,捐赠类型,使用方式 ) 捐赠信息 2(受益人身份证号,受益人姓名,受益人所在单位,受益人类型 ) 捐赠信息 3(捐赠编号,受益人身份证号,受益金额,使用说明 ) (1)修正后的主键如下: 捐赠信息 1(捐赠编号,捐赠校友,捐赠时间,捐赠金额,捐赠类型,使用方式 ) 捐赠信息 2(受益人身份证号,受益人姓名,受益人所在单位,受益人类型 ) 捐赠信息 3(捐赠编号,受益人身份证号,受益金额,使用说明 ) 【试题解析】 本问题考查第二范式和
36、第三范式。 根据第三范式的要求:非主属性不完全 依赖于码。 根据 “捐赠信息 ”关系模式,可知其码为 (捐赠编号,受益人身份证号 ),而又存在部分函数依赖: 捐赠编号 捐赠校友,捐赠时间,捐赠金额,捐赠类型,使用方式。 受益人身份证号 受益人姓名,受益人所在单位,受益人类型。 所以,捐赠信息 ”关系不满足第二范式,会造成:插入异常、删除异常和修改复杂 (或修改异常 )。 因为存在部分函数依赖,因此对 “捐赠信息 ”进行分解,分解后的关系模式如下: 捐赠信息 1(捐赠编号,捐赠校友,捐赠时间,捐赠金额,捐赠类型,使用方式 ) 捐赠信息 2(受益人身份证号,受益人姓名,受益人所在单位,受益人类型
37、) 捐赠信息 3(捐赠编号,受益人身份证号,受益金额,使用说明 ) 其中, “捐赠信息 1”关系的函数依赖为: 捐赠编号 捐赠校友,捐赠时间,捐赠金额,捐赠类型,使用方式。 “捐赠信息 2”关系的函数依赖为: 受益人身份证号 受益人姓名,受益人所在单位,受益人类型。 “捐赠信息 3”关系的函数依赖为: 捐赠编号,受益人身份证号 受益金额,使用说明。 这三个关系中的每一个非主属性既不部分依赖于码也不传递依赖于码 ,因此满足第三范式的要求。 22 【正确答案】 (1)“项目受益情况 ”关系模式,不满足第四范式。 (2)分解后的关系模式如下: 项目受益情况 1(项目编号,受益单位,受益比例 ) 项目
38、受益情况 2(项目编号,捐赠编号,项目受益金额 ) 【试题解析】 本问题考查的是第四范式。 根据 “项目受益情况 ”关系模式可知,其码为:项目编号,受益单位,捐赠编号。 而又存在部分函数依赖: 项目编号,受益单位 受益比例 项目编号,捐赠编号 项目受益金额 项目编号 受益单位,受 益比例 项目编号 捐赠编号,项目受益金额 同时,可以根据第四范式的要求:不允许有非平凡且非函数依赖的多值依赖。 而在 “项目受益情况 ”关系模式中存在如下的多值依赖: 项目编号 受益单位,受益比例 项目编号 捐赠编号,项目受益金额 因此, “项目受益情况 ”关系模式不满足第四范式。 因为存在多值依赖,因此对 “项目受
39、益情况 ”进行分解,分解后的关系模式如下: 项目受益情况 1(项目编号,受益单位,受益比例 ) 项目受益情况 2(项目编号,捐赠编号,项目受益金额 ) 其中: “项目受益情况 1”关系的函数依赖为:项目编号,受益单位 受益比例。 “项目受益情况 2”关系的函数依赖为:项目编号,捐赠编号 项目受益金额。 这两个关系不存在多值依赖,因此满足第四范式的要求。 五、试题五( 15分) 23 【正确答案】 将写订单记录和修改库存表作为一个完整的事务来处理,当修改库存表无法执行时,回滚事务,则会撤销写入的订单记录,数据库保持一致。 本题考查事务及并发控制的概念和应用,属于比较传统的题目,考查点也与往年类似
40、。 【试题解析】 本问题考查事务的基 本概念。对于现实中的一项业务,相对应的数据库更新操作应作为一个完整的事务,要么全做要么全不做。销售业务对应的写入订单记录和更新库存表应作为一个事务,当出现故障 (违反约束 )而无法完成时,应回滚事务。 24 【正确答案】 (1)出现问题:客户 1购买后写入的库存量值被覆盖,库存量不能体现客户 1已购买,属于丢失修改造成的数据库不一致性。 (2)重写后的序列: I1(A), I2(A), XLock1(A), x1=R1(A), x1=x1-a1, W1(A, x1), Unlock1(A),XLock2(A), x2=R2(A), x2=x2-a2, W2
41、(A, x2), Unlock2(A)。 【试题解析】 本问题考查对事务并发控制的相关知识的理解掌握。若对并发事务的指令交叉执行不加以干涉,就会相互干扰,破坏事务的隔离性,造成数据库的不一致。并发事务产生的三种不一致性为丢失修改、不可重复读和读脏数据。本例中客户 1对库存量的修改被客户 2的修改覆盖,出现丢失修改不一致性。 为保证可串行化调度,在事务执行过程中引入相应指令进行控制,即两段锁协议(2PL),对数据读之前先加读锁,写前加写锁,事务只有获得相应的锁才能操作数据,加解锁过 程分为两个阶段,前一阶段只能加锁,后一阶段只能解锁,不允许有交叉。两段锁协议是保证并发事务可串行化调度的充分条件。
42、 针对给出的伪指令操作序列,需要在修改库存量之前加 Xlock()指令,并保证客户 1释放 A上的锁后客户 2才能加锁。题目设定插入订单表的操作不需要引入锁指令,每个事务只需对库存量加解锁,满足 2PL协议。 25 【正确答案】 (a)return (b)商品 ID=:MID (c)=(c/)COMMTT 【试题解析】 本问题考查对 2PL协议理论与 SQL中的隔离级别,以及嵌入式SQL的编程 实践。 本题给出的空缺 (a)是在事务回滚之后,需要补充的是控制程序逻辑的 return语句;空缺 (b)要补充的是 WHERE条件,即指定的商品 ID;空缺 (c)要补充的是事务提交语句 COMMIT。