1、2010年上半年软件水平考试(中级)数据库系统工程师下午(应用技术)试题真题试卷及答案与解析 一、试题一( 15分) 0 某大型企业的数据中心为了集中管理、控制用户对数据的访问并支持大量的连接需求,欲构建数据管理中问件,其主要功能如下: (1)数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息 (用户名、密码 )存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。 (2)中间件验证前端应用提供的用户信息。若验证不通过,返回非法用户信息;若验证通过,中
2、间件将等待前端应用提交操作请求。 (3)前端应用提交操作请求后,中间件先对请求进行格式检查。如果格式不正确,返回格式错误信息;如果格式正确,则进行权限验证 (验证用户是否有权执行请求的操作 ),若用户无权执行该操作,则返回权限不足信息,否则进行连接管理。 (4)连接管理连接相应的后台数据库并提交操作。连接管理先检查是否存在空闲的数据库连接,如果不存在,新建连接;如果存在,则重用连接。 (5)后端数据库执行操作并将结果传给中间件 ,中间件对收到的操作结果进行处理后,将其返回给前端应用。 现采用结构化方法对系统进行分析与设计,获得如图 1-1所示的顶层数据流图和图1-2所示的 0层数据流图。1 使
3、用说明中的词语,给出图 1-1中的实体 E1 E3的名称。 2 使用说明中的词语,给出图 1-2中的数据存储 D1 D3的名称。 3 给出图 1-2中加工 P的名称及其输入、输出流。除加工 P的输入与输出流外,图 1-2还缺失了两条数据流,请给出这两条数据流的起点和终点。 起点 终点 注:名称使用说明中的词汇,起点和终点均使用图 1-2中的符号 或词汇。 4 在绘制数据流图时,需要注意加工的绘制。请给出三种在绘制加工的输入、输出时可能出现的错误。 二、试题二( 15分) 4 天津市某银行信息系统的数据库部分关系模式如下所示: 客户 (客户号,姓名,性别,地址,邮编,电话 ) 账户 (账户号,客
4、户号,开户支行号,余额 ) 支行 (支行号,支行名称,城市,资产总额 ) 交易 (交易号,账户号,业务金额,交易日期 ) 其中,业务金额为正值表示客户向账户存款;为负值表示取款。 5 以下是创建账户关系的 SQL语 句,账户号唯一识别一个账户,客户号为客户关系的唯一标识,且不能为空。账户余额不能小于 1.00元。请将空缺部分补充完整。 CREATE TABLE账户 ( 账户号 CHAR(19) (a) , 客户号 CHAR(10) (b) ; 开户支行号 CHAR(6) NOT NULL, 余额 NUMBER(8,2) (c) ); 6 现银行决策者希望查看在天津市各支行开户且 2009年 9
5、月使用了银行存取服务的所有客户的详细信息,请补充完整 相应的查询语句。 (交易日期形式为 2000-01-01) SELECT DISTINCT客户 .* FROM客户 ,账户 ,支行 ,交易 WHERE客户 .客户号 =账户 .客户号 AND 账户 .开户支行号 =支行 .支行号 AND (d) AND 交易 .账户号 =账户 .账户号 AND (e) ; 上述查询优化后的语句如下,请补充完整。 SELECT DISTINCT客户 .* FROM 客户 ,账户 , (f) AS新支行, (g) AS新交易 WHERE客户 .客户号 =账户 .客户号 AND 账户 .开户支行号 =新支行 .支
6、行号 AND 新交易 .账户号 =账户 .账户号; 7 假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息并按客户号降序排列。 SELECT * FROM客户 WHERE (h) (SELECT客户号 FROM账户 GROUP BY客户号 (i) ) ORDER BY (j) ; 8 为账户关系增加一个属性 “账户标记 ”,缺省值为 0,取值类型为整数;并将当前账户关系中所有记录的 “账户标记 ”属性值修改为 0。请补充相关 SQL语句。 ALTER TABLE 账户 (k) DEFAULT 0; UPDATE 账户 (l) ; 9 对于每笔金额超过 10万元的交
7、易,其对应账户标记属性值加 1,给出触发器实现的方案。 CREATE TRiGGER 交易 _触发器 (m) ON交易 REFERENCING NEW ROW AS 新交易 FOR EACH ROW WHEN (n) BEGIN ATOMIC UPDATE 账户 SET 账户标记 =账户标记 +1 WHERE (o) ; COMMIT WORK; END 三、试题三( 15分) 9 某学校拟开发一套实验管理系统,对各课程的实验安排进行管理。 需求分析 每个实验室可进行的实验类型不同。由于实验室和实验员资源有限,需根据学生人数分批次安排实验室和实验员。一门含实验的课程可以开设给多个班级,每个班级
8、每学期可以开设多门含实验的课程。每个实验室都有其可开设的实验类型。一门课程的一种实验可以根据人数、实验室的可容纳人数和实验室类型,分批次开设在多个实验室的 不同时间段。一个实验室的一次实验可以分配多个实验员负责辅导实验,实验员给出学生的每次实验成绩。 1课程信息包括:课程编号、课程名称、实验学时、授课学期和开课的班级等信息;实验信息记录该课程的实验进度信息,包括:实验名、实验类型、学时、安排周次等信息,如表 3-1所示。2以课程为单位制定实验安排计划信息,包括:实验地点,实验时间、实验员等信息。实验计划如表 3-2所示。3由实验员给出每个学生每次实验的成绩,包括:实验名,学号,姓名,班级,实验
9、成绩等信息。实验成绩如表 3-3所示。4学生的实验课程总成绩 根据每次实验的成绩以及每次实验的难度来计算。 概念模型设计 根据需求阶段收集的信息,设计的实体联系图 (不完整 )如图 3-1所示。逻辑结构设计 根据概念模型设计阶段完成的实体联系图,得出如下关系模式 (不完整 ): 课程(课程编号,课程名称,授课院系,实验学时 ) 班级 (班级号,专业,所属系 ) 开课情况 ( (1) ,授课学期 ) 实验 ( (2) ,实验类型,难度,学时,安排周次 ) 实验计划( (3) ,实验时间,人数 ) 实验员 ( (4) ,级别 ) 实验室 (实验室编号,地点,开放时间,可容纳人数,实验类型 ) 学
10、生 ( (5) ,姓名,年龄,性别 ) 实验成绩 ( (6) ,实验成绩,评分实验员 ) 10 补充图 3-1中的联系和联系的类型。 11 根据图 3-1,将逻辑结构设计阶段生成的关系模式中的空 (1) (6)补充完整。对所有关系模式,用下划线标出各关系模式的主键。 12 如果需要记录课程的授课教师,新增加 “授课教师 ”实体。请对图 3-1进行修改,画出修改后的实体问联系和联系的类型。 四、试题四( 15分) 12 某旅行社拟开发一套旅游管理系统,以便管理旅游相关的信息。 1旅行社可发布旅游线路的信息,包含 :线路的价格、天数、住宿情况,以及具体的行程安排等。不同的线路参观的景点及住宿情况不
11、相同,如表 4-1所示。2游客与旅行社沟通,选择适合自己的线路,并由旅行社为其生成订单,以记录游客联系人的姓名、身份证号、联系方式、人数、所选线路、导游安排和票务信息。旅行社为游客在行程中的每个城市安排一个负责导游,负责游客在该城市的具体旅行安排。同一城市的负责导游相同,不同城市的负责导游有可能不同。 3旅行社的每位员工只属于一种固定的员工类别,系统可记录员工的多部手机号。旅行社按月统计导游每月的带团人数和游客投诉次数, 以计算导游的当月月薪。 根据上述需求,初步设计了旅游信息数据库,其关系模式如图 4-1所示。 关系模式中主要属性的含义及约束如表 4-2所示。 对关系 “线路信息 ”,请回答
12、以下问题: 13 ( 1)列举出所有不属于任何候选键的属性 (非键属性 )。 ( 2)关系 “线路信息 ”是否为 BCNF范式,用 60字以内文字简要叙述理由。 14 对关系 “订单信息 ”,请回答以下问题: ( 1) “订单信息 ”是否为 2NF范式,用 100字以内文字简要说明会产生什么问题。 ( 2)把 “订单信息 ”分解为第三范式,分解后的关系名依次为:订 单信息 1,订单信息 2, 。 ( 3)列出分解后的各关系模式的主键。 15 对关系 “员工信息 ”,请回答以下问题: ( 1)关系 “员工信息 ”是不是第四范式,用 100字以内文字叙述理由。 ( 2)若 “员工信息 ”不是第四范
13、式,将其分解为第四范式,分解后的关系名依次为:员工信息 1,员工信息 2, 。 五、试题五( 15分) 15 某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如表 5-1所示。假设某售票网点一次售出 a张航班 A的机票,则售票 程序的伪指令序列为: R(A,x);W(A,X-a)。根据上述业务及规则,完成下列问题: 16 若两个售票网点同时销售航班 A的机票,在数据库服务器端可能出现如下的调度: A: R1(A,x), R2(A,X), W1(A,x-1), W2(A,x-2); B: R1(A,x), R2(A,x
14、),W2(A,x-2), W1(A,x-1); C: R1(A,x), W1(A,x-1), R2(A,X), W2(A,x-2); 其中Ri(A,x), Wi(A,x)分别表示第 i个销售网点的读写操作,其余类同。 假设当前航班A剩余 10张机票 ,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。 17 ( 1)判定事务并发执行正确性的准则是什么 ?如何保证并发事务正确地执行 ? ( 2)引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。 18 下面是用 E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。 EXEC SQL SET TRA
15、NSACTION ISOLATION LEVEL SERIALIZABLE EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight=A; printf(“航班 A当前剩余机票数为: %dn请输入购票数: “,x); scanf(“%d“, a); x=x-a; if(x 0) EXEC SQL ROLLBACK WORK; printf(“票数不够,购票失败 !“); else EXEC SQL UPDATE tickets SET (a) ; if(SQLCA.sqlcode SUCCESS) EXEC SQL ROLLBACK W
16、ORK; else (b) ; 2010年上半年软件水平考试(中级)数据库系统工程师下午(应用技术)试题真题试卷答案与解析 一、试题一( 15分) 1 【正确答案】 E1:前端应用 E2:数据管理员 E3:后端数据库 【试题解析】 本问题考查顶层 DFD。项层 DFD一股用来确定系统边界,将待开发系统看作是一个加工,因此图中 只有唯一的一个加工和一些外部实体,以及这两者之问的输入输出数据流。题目要求根据描述确定图中的外部实体。分析题目中的描述,并结合已经在顶层数据流图中给出的数据流进行分析。题目中有信息描述:数据管理员可通过中间件进行用户管理、操作管理和权限管理;前端应用提交操作请求;连接管理
17、连接相应的后台数据库并提交操作。由此可知该中间件系统有数据管理员、前端应用和后端数据库三个外部实体。对应图 1-1中数据流和实体的对应关系,可知 E1为前端应用, E2为数据管理员, E3为后端数据库。 2 【正确答案】 D1:用户表 D2:操作表 D3:权限表 【试题解析】 本问题考查 0层 DFD中数据存储的确定。说明中描述:用户信息(用户名、密码 )存储在用户表中;标准操作和后端数据库信息存放在操作表中;权限管理维护信息存放在权限表中。因此数据存储为用户表、操作表以及权限表。再根据图 1-2中 D1的输入数据流从用户管理来, D2的输入数据流从操作管理来, D3的输入数据流从权限管理来,
18、所以 D1为用户表, D2为操作表, D3为权限表。 3 【正确答案】 P的名称:操作结果处理缺少的数据流 【试题解析】 本问题考查 0层 DFD中缺 失的加工和数据流。比较图 1-1和图 1-2,可知顶层 DFD中的操作结果和处理后的操作结果没有在 0层 DFD中体现。再根据描述:后端数据库执行操作并将结果传给中间件,中间件对收到的操作结果进行处理后,将其返回给前端应用。可知,需要有操作结果处理,因此 P为操作结果处理,其输入流从后端数据库 E3来的操作结果,输出结果为处理后的操作结果,并返回给前端应用 E1。 考查完 P及其输入输出流之后,对图 1-2的内部数据流进行考查,以找出缺失的另外
19、 2条数据流。从图中可以看出 D2和 D3只有输入流没有输出流,这是常见DFD设计 时的错误,所以首先考查 D2和 D3的输出流。描述中:权限验证是验证用户是否有权执行请求的操作,若用户有权执行该操作,进行连接管理;连接管理连接相应的后台数据库并提交操作;权限表存储用户可执行的操作信息。因此,权限验证有从权限表 D3来的输入数据流。而要连接后端数据库,需要数据库信息,从权限验证的输出流中包含有数据库信息可知,权限验证需要获取到数据库信息,所以还需从操作表 D2来的输入流。 4 【正确答案】 在绘制数据流图的加工时,可能出现的输入、输出错误: 只有输入而无输出或者黑洞 只有输出而无输入或者奇迹
20、输入的数据流无法通过加工产生输出流或者灰洞 输入的数据流与输出的数据流名称相同 【试题解析】 本问题考查在绘制数据流图中加工绘制时的注意事项。绘制加工时可能出现的错误有:加工的输入、输出时可能出现只有输入而无输出、只有输出而无输入、输入的数据流无法通过加工产生输出流以及输入的数据流与输出的数据流名称相同等错误。 二、试题二( 15分) 5 【正确答案】 (a)PRiMARY KEY/NOT NULL UNIQUE/NOT NULL PRiMARY KEY (b)FOREIGN KEY(客户号 )REFERENCES客户 (客户号 ) (c)CHECK(余额 1.00) 【试题解析】 由于问题
21、1中 “账户号唯一识别一个账户 ”可知账户号为账户关系的主键,即不能为空且唯一标识一条账户信息,因此需要用 PRiMARY KEY对该属性进行主键约束;又由于 “客户号为客户关系的唯一标识,且不能为空 ”可知客户号为客户关系的主键,在账户关系中应作外键,用 FOREIGN KEY对该属性进行外键约束;由 “账户余额不能小于 1.00元 ”可知需要限制账户余额属性值的范围,通过 CHECK约束 来实现。从上分析可见,完整的 SQL语句如下: CREATE TABLE账户 ( 账户号 CHAR(19) PRiMARY KEY, 客户号 CHAR(10) FOREIGN KEY(客户号 )REFER
22、ENcEs客户 (客户号 ), 开户支行号 CHAR(6) NOT NULL, 余额 NUMBER(8,2) CHECK(余额 1.00); 注: PRiMARY KEY可替换为 NOT NULL UNIQUE或 NOT NULL PRiMARY KEY。 6 【正确答案】 (d)支行 .城市 =天津市 (e)交易 .交易日 期 LIKE2009-09-%或等价表示 (f)(SELECT*FROM 支行 WHERE城市 =天津市 ) (g)(SELECT*FROM 交易 WHERE交易日期 LIKE2009-09%)或等价表示 【试题解析】 根据问题 2要求应在表连接条件的基础上,需要添加两个
23、条件: 支行关系的城市属性值为 “天津市 ”,即支行城市 =天津市 ; 在 2009年 9月存在交易记录,由于交易日期形式为 2000-01-01,所以需要通过模糊匹配来实现,用LIKE关键词和通配符表示,即交易交易日期 LIKE2009-09-%。 WHERE子句中条件的先后顺序会对执行效率产生影响。假如解析器是按照先后顺序依次解析并列条件,优化的原则是:表之间的连接必须出现在其他 WHERE条件之后,那些可以过滤掉最多条记录的条件尽可能出现在 WHERE子句中其他条件的前面。要实现上述优化过程,可以重新组织 WHERE条件的顺序或者通过嵌套查询以缩小连接记录数目的规模来实现。 根据问题 2
24、要求,考生需要添加两个子查询以缩小参与连接的记录的数目,即筛选出天津市的所有支行 (SELECT+FROM支行 WHERE城市 =天津市 ),而且找到2009年 9月发生的交易记录 (SELECT+FROM交易 WHERE交易日期LIKE2009-09-%),然后再做连接查询。 7 【正确答案】 (h)客户号 IN (i)HAVING SUM(余额 ) 1000000.00或等价表示 (j)客户号 DESC 【试题解析】 根据问题 2要求,可通过予查询实现 “所有账户余额之和超过百万的客户信息 ”的查询;对 SUM函数计算的结果应通过 HAVING条件语句进行约束;降序通过 DESC关键字来实
25、现。 SELECT * FROM 客户 WHERE 客户号 IN (SELECT 客户号 FROM 账户 GROUP BY客户号 HAVING SUM(余额 )1000000.00) ORDER BY客户号 DESC; 8 【正确答案】 (k)ADD账户标记 INT (l)SET账户标记 =0; 【试题解析】 关系模式的修改通过 ALTER语句来实现,使用 ADD添加属性;使用 SET修改属性值。 ALTER TABLE 账户 ADD 账户标记 INT DEFAULT 0; UPDATE 账户 SET 账户标记 =0; 9 【正确答案】 (m)AFTER INSERT (n)新交易 .金额 1
26、00000.00或等价表示 (o)账户 .账户号 =新交易 .账户号 【试题解析】 创建触发器可通过 CREATE TRiGGER语句实现,问题 3要求考生掌握该语句的基本语法结构。按照问题 3要求,在交易关系中插入一条记录时触发器应自动执行,故需要创建基于 INSERT类型的触发器,其触发条件是新插入交易记录的金额属性值 100000.00;最后添加表连接条件。完整的触发器实现方案如下: CREATE TRiGGER交易触发器 AFTER INSERT ON交易 REFERENCING NEW ROW AS新交易 FOR EACH ROW WHEN新交易 .金额100000.00 BEGIN
27、 ATOMIC UPDATE 账户 SET 账户标记 =账户标记 +1 WHERE 账户 .账户号 =新交易 .账户号 ; COMMIT WORK; END 三、试题三( 15分) 10 【正确答案】 【试题解析】 根据题意由 “一门含实验的课程可以开设给多个班级,每个班级每学期可以开设多门含实验的课程 ”可知课程和班级之间的开设关系为 m:n联系。由“一个 实验室的一次实验可以分配多个实验员负责辅导实验 ”可知实验、实验室与实验员之间的安排关系为 k:n:m联系。由 “实验员给出学生的每次实验成绩 ”可知实验、学生与实验员之间的成绩关系为 k:n:m联系。班级和学生之间的包含关系为 1:n联
28、系。 11 【正确答案】 1)课程编号,班级号 (2)实验编号,课程编号 (3)实验编号,批次号,安排学期,实验室编号,实验员编号 (4)实验员编号,实验员姓名 (5)学号,班级号 (6)实验编号,学号 其他关系模式主键: 课 程 (课程编号,课程名称,授课院系,实验学时 ) 班级 (班级号,专业,所属系 ) 实验室 (实验室编号,地点,开放时间,可容纳人数,实验课类型 ) 【试题解析】 根据题意,可知课程编号是课程的主键,班级号是班级的主键。从表 3-1可见,开课情况是体现课程与班级间的 m:n联系,因此开课情况关系模式应该包含课程编号和班级号,并共同作为主键。一门课程包含多次实验,实验与课
29、程之间是 m:1关系,因此,由表 3-1可知,实验关系模式应包含实验编号和课程编号,并且以实验编号为主键,以课程编号为外键。在制定试验计划 时,每个班的每次实验可能按实验室被分成多个批次,每个批次的实验会有若干名实验员来辅导学生实验并打分。实验员关系模式应该记录实验员编号和实验员姓名,并以实验员编号为主键。实验室编号是实验室的主键。从表 3-2可知,实验计划关系模式应记录实验编号、批次号和授课学期,并且共同作为主键。从表 3-3可知,实验成绩关系模式记录每个学生的每次实验成绩,应包含学号和实验编号,并共同作为主键。 12 【正确答案】 【试题解析】 由于授课教师负责给若干个班级开设若干门课程,
30、因此,课程、班级和授课教师之间的开设关系是 k:n:m联系。 四、试题四( 15分) 13 【正确答案】 ( 1)价格,天数 ( 2) “线路信息 ”关系模式可以达到 BCNF范式。 因为非主属性价格、天数完全函数依赖于码且不传递依赖于码,且仅一个候选码,并为单属性。 或答:每个函数依赖的决定因素都包含码。 【试题解析】 本问题考查非主属性和 BCNF范式。 根据题意和 “线路信息 ”关系模式可知,不属于任何候选键的属性 (非键属性 )为:价格,天数。 根据 BCNF范式的要求:每一个函数依赖的决定因素都包含码。 而 “线路信息 ”关系模式的函数依赖为: 线路编号 价格,天数 因此, “线路信
31、息 ”关系模式可以达到 BCNF范式。 14 【正确答案】 ( 1) “订单信息 ”关系不满足第二范式,即非主属性不完全依赖于码。 会造成插入异常、删除异常和修改复杂 (或修改异常 )。 ( 2)分解后的关系模式如下: 订单信息 1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数 ) 订单信息 2(联系人身份证号,联系人名称,联系方式 ) 订单信息 3(订单号,负责导游工号,负责城市 ) ( 3)分解后的主键如下 : 订单信息 1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数 ) 订单信息 2(联系人身份证号,联系人名称,联系方式 ) 订单信息 3(订单号,负责导游工
32、号,负责城市 ) 【试题解析】 本问题考查第二范式和第三范式的理解和应用。 根据第二范式的要求:不存在非主属性对码的部分依赖。 根据题意和 “订单信息 ”关系模式可知,不属于任何候选键的属性 (非键属性 )为: 线路编号,联系人名称,联系人身份证号,人数,联系方式,订单价格,出发时间,负责城市。 “订单信息 ”关系模式的函数依赖为: 订单号,负责导游工号 负责城市 订单号 线路编号,联系人身份证号,人数,订单价格,出发时间 联系人身份证号 联系人名称,联系方式 “订单信息 ”关系模式存在非主属性对码的部分依赖,因此,不属于第二范式。 根据第三范式的要求:每一个非主属性既不部分依赖于码也不传递依
33、赖于码。 因此,需要根据第三范式的要求和 “订单信息 ”关系模式的函数依赖,对 “订单信息 ”关系模式进行分解以满足第三范式的要求。 15 【正确答案】 ( 1) “员工信息 ”关系模式,不满足第四范式。 答出以下内容之一即可: 该关系模式不满足第二范式。 该关系模式存在多值依赖。 员工工号,计薪月 姓名,年龄,员工类别,为部分决定。 员工工号 手机号。 ( 2)分解后的关系模式如下: 员工信息 1(员工工号,姓名,年龄,员工类别 ) 员工信息 2(员工工号,手机号 ) 员工信息 3(员工工号,计薪月,被投诉次数,带团人数,月薪 ) 【试题解析】 本问题考查第四范式的理解和应用。 根据第四范式
34、的要求:不允许有非 平凡且非函数依赖的多值依赖。 “员工信息 ”关系模式的函数依赖为: 员工工号 姓名,年龄,员工类别 员工工号 手机号 员工工号 计薪月,被投诉次数,带团人数,月薪 由 “员工信息 ”关系模式的函数依赖可知, “员工信息 ”关系模式存在部分依赖,所以, “员工信息 ”关系模式不满足第二范式;而 “员工信息 ”关系模式也存在多值依赖,所以, “员工信息 ”关系模式不满足第四范式。 因此,需要根据第四范式的要求和 “员工信息 ”关系模式的函数依赖,对 “员工信息 ”关系模式进行分解以满足第四范式 的要求。 五、试题五( 15分) 16 【正确答案】 调度 A结果: 8 调度 B结
35、果: 9 调度 C结果: 7 调度 A、 B结果错误,因为破坏了事务的隔离性。一个事务的执行结果被另一个所覆盖。 【试题解析】 本问题考查并发情况下不同的调度可能产生不同结果的情况。针对两个并发执行的售票程序,会相互影响从而得到错误的结果。 17 【正确答案】 ( 1)判定事务并发执行正确性的准则是满足可串行化调度。要保证并发事务正确地执行,采用两段锁协议 (2PL)。 ( 2)重写后的售票程序伪指令序列: XLock(A);R (A,x); w (A, x-a); Unlock(A); 【试题解析】 本问题考查对事务并发控制的相关知识的理解掌握。事务并发调度是否正确,可通过对非冲突语句进行交
36、换,若最终将并发调度通过交换非冲突语句转换成串行调度,则该并发调度为可串行化调度,可串行化调度被作为事务并发执行正确性的准则。 为保证可串行化调度,在事物执行过程中引入相应指令进行控制,即两段锁协议(2PL),即对数据读之前先加读锁,写前加写锁,事务只有获得相应的锁才能操作数据,加解锁过程分为两个阶段,前一阶段只能加 锁,后一阶段只能解锁,不允许有交叉。两段锁协议是保证并发事务可串行化调度的充分条件。 针对给出的伪指令操作序列,在事务读取数据之前加 Slock()指令,写数据之前加 Xlock()指令,并保证读 /写锁不交叉,即满足两段锁协议。 18 【正确答案】 (a)balance= :x WHERE flight=A (b)EXEC SQL COMMIT WORK 【试题解析】 本问题考查对 2PL协议理论与 SQL中的隔离级别,以及嵌入式SQL的编程实践。 本地给出的空缺 (a)要补充的是嵌入式 SQL的更新语句;空缺 (b)要补充的是嵌入式SQL中的事务提交语句。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1