欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】中级数据库系统工程师下午试题-5及答案解析.doc

    • 资源ID:1322658       资源大小:58.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】中级数据库系统工程师下午试题-5及答案解析.doc

    1、中级数据库系统工程师下午试题-5 及答案解析(总分:66.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明 某大型的产品售后服务机构计算机管理中需要如下的信息: 部门 (部门名,所处地点,部门电话,员工姓名) 柜台 (柜台号,维修产品,所属的部门) 员工 (姓名,工龄,所属部门,年龄,工作证号) 顾客 (服务记录号,姓名,性别,购买产品,接待员工,柜台号) 其中,一个部门可以拥有多个柜台,多名员工,一个柜台只能属于一个部门,一个员工只能属于一个部门,但是可以为多个顾客服务,一个顾客的接待员工只有一个。 完成如下设计:(分数:15.00)(1).问题 1 设计该计算机管

    2、理系统的 E-R 图。(分数:5.00)_(2).问题 2 将该 E-R 图转换为关系模型结构。(分数:5.00)_(3).问题 3 指出转换结果中每个关系模式的候选码。(分数:5.00)_二、试题二(总题数:1,分数:15.00)【说明】 某论坛的部分关系模式如下: 用户(用户编号,账号,密码,积分,级别) 栏目(栏目编号,父栏目编号,名称,版主,描述) 主题(主题编号,标题,类型,点击率,内容,发布时间,栏目编号,用户编号,附件) 回复主题(回复主题编号,标题,主题编号,内容,发布时间,用户编号,附件) 其中: (1)用户编号唯一标识一个用户。用户的积分根据其发布的主题信息按积分规则计算。

    3、级别的值来自集合高级用户,普通用户,初级用户,当用户开始注册时,积分为 100,级别为初级用户;当用户积分到达 1000 时,级别为普通用户;当用户积分到达 5000 时,级别为高级用户。 (2)栏目编号唯一标识一个栏目。栏目分两级,包括父栏目和子栏目。每个栏目必须有且仅有一个版主,版主是一个用户。 (3)主题编号唯一标识一个主题。类型的值来自集合精华,置顶,普通。 (4)回复主题编号唯一识别一个回复主题。一个回复主题对应一个主题,而一个主题可以有多个回复主题。(分数:15.00)(1).【问题 1】 请将下列 SQL 语句的空缺部分补充完整。 (1)假设已经创建好用户关系,现在想增加一个属性

    4、“个性签名”,类型为 VARCHAR(60),请给出相关的SQL 语句。 _a._ ; (2)假设已经创建好用户关系,下面是创建栏目关系的 SQL 语句,请将空缺部分补充完整。 CREATE TABLE 栏目( 栏目编号 VARCHAR(8) PRIMARY KEY, 父栏目编号 VARCHAR (8), 名称 VARCHAR(40), 版主 VARCHAR(8) NOT NULL, 描述 VARCHAR(100), _b._ , _c._ ,(分数:3.75)_(2).【问题 2】 请将下列 SQL 语句的空缺部分补充完整。 (1)查询标题或内容包含“SQL”的主题标题,按发布时间降序排序。

    5、 SELECT DISTINCT 标题 FROM 主题 _(d)_ _(e)_ ; (2)查找名称为“数据库技术”的栏目及其子栏目中的精华主题的标题和点击率。 SELECT 标题,点击率 FROM 主题 WHERE 类型=“精华“ AND 栏目编号 _(f)_ (SELECT 栏目编号 FROM 栏目 WHERE 名称=“数据库技术“ _(g)_ SELECT 栏目编号 FROM 栏目 WHERE _(h)_ (SELECT 栏目编号 FROM 栏目 WHERE 名称=“数据库技术“);(分数:3.75)_(3).【问题 3】 假设所有关系模式已创建,回复主题关系模式的“主题编号”是外键,参照

    6、主题关系模式的“主题编号”。现在要删除编号为“T005”的主题及其相关的回复主题,下面是对应的删除语句,这些语句组成一个事务。DELETE 主题 WHERE 主题编号=T005; DELETE 回复主题 WHERE 主题编号=T005; (1)请问这些删除语句能否完成功能?若不能,请说明为什么? (100 字以内) _(i)_ (2)假设现在希望仅通过“DELETE 主题 WHERE 主题编号=T005;”这一条语句就能完成此删除功能,应如何实现? (100 字以内) _(j)_(分数:3.75)_(4).【问题 4】 为了了解每个栏目用户关注的主题,对原创主题创建视图主题 view,属性包括

    7、主题编号、标题、用户账号、栏目名称、回复数、点击率和发布时间。 CREATE VIEW 主题 view(主题编号,标题,用户账号,栏目名称,回复数,点击率,发布时间)As SELECT 主题主题编号,标题,账号,名称,回复数,点击率,发布时间 FROM 主题,用户,栏目,( _(k)_ FROM 回复主题 _(l)_ )As A WHERE 主题用户编号=用户用户编号 AND 主题栏目编号=栏目栏目编号 AND _(m)_(分数:3.75)_三、试题三(总题数:1,分数:20.00)现有这样一个关系,用来表示某工厂工人家庭的信息。记录每个工人的工作证号、姓名和家庭住址,还包含他/她的每个孩子的

    8、身份证号、姓名和年龄,以及他她所拥有的每部电话的电话号码和型号。 已知:有一些人可能有很多部电话,这些电话可能是同一型号,也可能不是同一型号;有一些人没有电话;如果某人有电话,他的每部电话都有一个电话号码。有一些人可能有很多个孩子,有一些人没有孩子。 初步设计的关系模式如下:R(身份证号,姓名,家庭住址,H 身份证号,H 姓名,H 年龄,电话号码,型号),其中“H 身份证号,H 姓名,H 年龄”分别是孩子的身份证号、姓名和年龄。(分数:20.00)(1).问题 1 请将该关系模式分解成第二范式的关系模式,确定主关系键。(分数:5.00)_(2).问题 2 请将该关系模式分解成第三范式的关系模式

    9、,确定主关系键。(分数:5.00)_(3).问题 3 请将该关系模式分解成 BCNF 的关系模式,确定主关系键。(分数:5.00)_(4).问题 4 请简要说明各范式之间的关系。(文字和图标形式皆可)(分数:5.00)_四、试题四(总题数:1,分数:1.00)1.【问题 3】 (1)部门关系模式存在什么问题?请用 100 字以内的文字阐述原因。为了解决这个问题可将关系模式分解,分解后的关系模式的关系名依次取部门_A、部门_B、 (2)假定月工作业绩关系模式为:月工作业绩(职员代码,年月,工作时间),请给出“杳询职员代码、职员名、年月、月工资”的 SQL 语句。 (分数:1.00)_五、试题五(

    10、总题数:1,分数:15.00)阅读下列说明,根据要求回答问题。 说明 某银行的转账业务分为如下两类操作。 (1)读取账户 A 余额到变量 x,记为 x=R(A)。 (2)将变量 x 值写入账户 A 中的余额,记为 W(A,x)。 从账户 A 向账户 B 转账金额 x 元的伪代码操作序列为:a=R(A),a=a-x,W(A,a),b=R(B),b=b+x,W(B,b)。 针对上述业务及规则,完成下列问题。(分数:15.00)(1).根据业务规则,转账业务要么被全部执行,要么全部不执行,应如何保障? 假设参与转账的账户余额有大于等于 0 的约束,上述伪代码执行中可能出现什么情况?应如何处理?请用1

    11、00 字以内的文字进行阐述。(分数:5.00)_(2).若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令 SLock(b)和独占锁指令 xLock(A)对数据 A 进行加锁,解锁指令 Unlock(A)对数据 A 进行解锁。 请补充上述转账业务的伪代码序列,使其满足 2PL 协议。(分数:5.00)_(3).若用 SQL 语句编写的转账业务事务程序如下。 START TRANSACTION; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE UPDATE Accounts SET CurrentBalance=CurrentBala

    12、nce - Amount WHERE AccountID=A; if error then ROLLBACK; COMMIT; UPDATE Accounts SET CurrentBalance=CurrentBalance + Amount WHERE AccountID=B; if error then ROLLBACK; CONMIT; 其中:Accounts 为账户表,CurrentBalance 为当前余额,Amount 为新存入的金额。 该事务程序能否保证数据的一致性?如不能,请说明原因并改正。请用 100 字以内的文字进行阐述。(分数:5.00)_中级数据库系统工程师下午试题-

    13、5 答案解析(总分:66.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)说明 某大型的产品售后服务机构计算机管理中需要如下的信息: 部门 (部门名,所处地点,部门电话,员工姓名) 柜台 (柜台号,维修产品,所属的部门) 员工 (姓名,工龄,所属部门,年龄,工作证号) 顾客 (服务记录号,姓名,性别,购买产品,接待员工,柜台号) 其中,一个部门可以拥有多个柜台,多名员工,一个柜台只能属于一个部门,一个员工只能属于一个部门,但是可以为多个顾客服务,一个顾客的接待员工只有一个。 完成如下设计:(分数:15.00)(1).问题 1 设计该计算机管理系统的 E-R 图。(分数:5

    14、.00)_正确答案:()解析:E-R 如下所示: (2).问题 2 将该 E-R 图转换为关系模型结构。(分数:5.00)_正确答案:()解析:对应的关系模型结构如下: 部门 (部门名,所处地点,部门电话) 柜台 (柜台号,维修产品,部门名) 员工 (姓名,工龄,所属部门,年龄,工作证号) 顾客 (服务记录号,姓名,性别,购买产品,接待员工,柜台号)(3).问题 3 指出转换结果中每个关系模式的候选码。(分数:5.00)_正确答案:()解析:对应的每个关系模型的候选码如下: 部门的候选码是部门名 柜台的候选码是柜台号+部门名 员工的候选码是工作证号 顾客的候选码是服务记录号二、试题二(总题数:

    15、1,分数:15.00)【说明】 某论坛的部分关系模式如下: 用户(用户编号,账号,密码,积分,级别) 栏目(栏目编号,父栏目编号,名称,版主,描述) 主题(主题编号,标题,类型,点击率,内容,发布时间,栏目编号,用户编号,附件) 回复主题(回复主题编号,标题,主题编号,内容,发布时间,用户编号,附件) 其中: (1)用户编号唯一标识一个用户。用户的积分根据其发布的主题信息按积分规则计算。级别的值来自集合高级用户,普通用户,初级用户,当用户开始注册时,积分为 100,级别为初级用户;当用户积分到达 1000 时,级别为普通用户;当用户积分到达 5000 时,级别为高级用户。 (2)栏目编号唯一标

    16、识一个栏目。栏目分两级,包括父栏目和子栏目。每个栏目必须有且仅有一个版主,版主是一个用户。 (3)主题编号唯一标识一个主题。类型的值来自集合精华,置顶,普通。 (4)回复主题编号唯一识别一个回复主题。一个回复主题对应一个主题,而一个主题可以有多个回复主题。(分数:15.00)(1).【问题 1】 请将下列 SQL 语句的空缺部分补充完整。 (1)假设已经创建好用户关系,现在想增加一个属性“个性签名”,类型为 VARCHAR(60),请给出相关的SQL 语句。 _a._ ; (2)假设已经创建好用户关系,下面是创建栏目关系的 SQL 语句,请将空缺部分补充完整。 CREATE TABLE 栏目(

    17、 栏目编号 VARCHAR(8) PRIMARY KEY, 父栏目编号 VARCHAR (8), 名称 VARCHAR(40), 版主 VARCHAR(8) NOT NULL, 描述 VARCHAR(100), _b._ , _c._ ,(分数:3.75)_正确答案:()解析:(1)(a)ALTER TABLE 用户 ADD 个性签名 VARCHAR(60); (2)(b)FOREIGN KEY(父栏目编号)REFERENCES 栏目(栏目编号) (c)FOREIGN KEY(版主)REFERENCES 用户(用户编号)(2).【问题 2】 请将下列 SQL 语句的空缺部分补充完整。 (1)查

    18、询标题或内容包含“SQL”的主题标题,按发布时间降序排序。 SELECT DISTINCT 标题 FROM 主题 _(d)_ _(e)_ ; (2)查找名称为“数据库技术”的栏目及其子栏目中的精华主题的标题和点击率。 SELECT 标题,点击率 FROM 主题 WHERE 类型=“精华“ AND 栏目编号 _(f)_ (SELECT 栏目编号 FROM 栏目 WHERE 名称=“数据库技术“ _(g)_ SELECT 栏目编号 FROM 栏目 WHERE _(h)_ (SELECT 栏目编号 FROM 栏目 WHERE 名称=“数据库技术“);(分数:3.75)_正确答案:()解析:(1)(d

    19、) WHERE 标题 LIKE %SQL% OR 内容 LIKE %SQL% (e)ORDER BY 发布时间 DESC (2)(f)IN (g)UNION (h)父栏目编号 IN(3).【问题 3】 假设所有关系模式已创建,回复主题关系模式的“主题编号”是外键,参照主题关系模式的“主题编号”。现在要删除编号为“T005”的主题及其相关的回复主题,下面是对应的删除语句,这些语句组成一个事务。DELETE 主题 WHERE 主题编号=T005; DELETE 回复主题 WHERE 主题编号=T005; (1)请问这些删除语句能否完成功能?若不能,请说明为什么? (100 字以内) _(i)_ (

    20、2)假设现在希望仅通过“DELETE 主题 WHERE 主题编号=T005;”这一条语句就能完成此删除功能,应如何实现? (100 字以内) _(j)_(分数:3.75)_正确答案:()解析:(1)(i)不能完成此功能。删除了主题编号为“T005”的主题后,可能会存在该主题的回复主题,违反参照完整性约束。 (2)(j)在创建回复主题关系时指定级联删除,定义主题编号属性的外键约束后加上 ON DELETE CASCADE。 或者是在主题关系上定义触发器,当删除主题时,删除其对应的回复主题。(4).【问题 4】 为了了解每个栏目用户关注的主题,对原创主题创建视图主题 view,属性包括主题编号、标

    21、题、用户账号、栏目名称、回复数、点击率和发布时间。 CREATE VIEW 主题 view(主题编号,标题,用户账号,栏目名称,回复数,点击率,发布时间)As SELECT 主题主题编号,标题,账号,名称,回复数,点击率,发布时间 FROM 主题,用户,栏目,( _(k)_ FROM 回复主题 _(l)_ )As A WHERE 主题用户编号=用户用户编号 AND 主题栏目编号=栏目栏目编号 AND _(m)_(分数:3.75)_正确答案:()解析:(k)SELECT 主题编号,COUNT(*)回复数或 SELECT 主题编号,COUNT(*)AS 回复数 (1)GROUP BY 主题编号 (

    22、m)主题.题编号=A.主题编号 试题二分析 本题考查 SQL 语言的知识。 问题 1 本题考查的是 SQL 的数据定义语言,即 SQL 的 DDL,第(1)题为基本表结构的修改,增加一个新的列用“ALTER.ADD.”语句;第(2)题为参照完整性约束,因为栏目关系中的父栏目编号和版主是外键,应该定义参照完整性约束。 问题 2 本题考查的是 SQL 的数据操纵语言,即 SQL 的 DML 中的 SELECT 语句。根据要求完成特定的查询要求,第(1)题考查 LIKE、ORDER BY 关键字的应用方法,第(2)题考查 m 和 UNION 关键字的应用方法。 数据查询是数据库的核心操作,SELEC

    23、T 语句是 SQL 语言中进行查询的语句。该语句提供丰富的功能和灵活的使用方式。SELECT 语句的一般格式为: SELECT ALL|DISTINCT目标列表达式,目标列表达式. FROM表名或视图名,表名或视图名. WHERE条件表达式 GROUP BY列名 1HAVING条件表达式 ORDER BY列名 2 IASC|DESC; SELECT 既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。考生应对 SELECT 语句非常熟悉,并能灵活的应用该语句进行各种查询。 问题 3 本题考查的是参照完整性约束,第(1)题给的两个 DELETE 语句,删除了主题编号为“T005”的主题

    24、后,可能会存在该主题的回复主题,违反参照完整性约束。因此 SQL 语句不能完成想要完成的功能,若这两个语句先后顺序调换过来,则可以完成功能。第 (2)题要求仅用一个 DELETE 语句就完成该删除要求,数据库提供了一些机制完成这个要求,一个是在定义回复主题关系时指定级联删除,定义主题编号属性的外键约束后加上 ON DELETE CASCADE;或者通过触发器机制,在主题关系上定义触发器,当删除主题时,删除其对应的回复主题,通过 CREATE TRIGGER.语句完成。 问题 4 本题考查的是数据库的视图,视图也是数据库中非常重要的概念,考生应该熟悉这个内容。另外,本题考查的还主要是 SELEC

    25、T 查询语句的应用方法。三、试题三(总题数:1,分数:20.00)现有这样一个关系,用来表示某工厂工人家庭的信息。记录每个工人的工作证号、姓名和家庭住址,还包含他/她的每个孩子的身份证号、姓名和年龄,以及他她所拥有的每部电话的电话号码和型号。 已知:有一些人可能有很多部电话,这些电话可能是同一型号,也可能不是同一型号;有一些人没有电话;如果某人有电话,他的每部电话都有一个电话号码。有一些人可能有很多个孩子,有一些人没有孩子。 初步设计的关系模式如下:R(身份证号,姓名,家庭住址,H 身份证号,H 姓名,H 年龄,电话号码,型号),其中“H 身份证号,H 姓名,H 年龄”分别是孩子的身份证号、姓

    26、名和年龄。(分数:20.00)(1).问题 1 请将该关系模式分解成第二范式的关系模式,确定主关系键。(分数:5.00)_正确答案:()解析:首先关系模式 R 的所有属性都是不可分的数据项,得到第一范式的关系模式: R1( 身份证号 ,姓名,家庭住址, H 身份证号 ,H 姓名,H 籍贯, 电适号码 ,型号) 其中身份证号、H 身份证号、电话号码是主关系键。但是由于存在着非主属性对主属性的部分函数依赖,采用投影分解法,R1 被分解为 R2、R3、R4、R5 得到第二范式的关系模型: R2( 身份证号 , H 身份证号 , 电适号码 ) R3( 身份证号 ,姓名,家庭住址) R4( H 身份证号

    27、 ,H 姓名,H 籍贯) B5( 电话号码 ,型号)(2).问题 2 请将该关系模式分解成第三范式的关系模式,确定主关系键。(分数:5.00)_正确答案:()解析:R3 中 H 籍贯传递函数依赖于 H 身份证号。再采用投影分解法,R4 被分解为 R6、R7 得到第三范式的关系模型: R2( 身份证号 , H 身份证号 , 电话号码 ) R3( 身份证号 ,姓名,家庭住址) R5( 电话号码 ,型号) R6( H 身份证号 ,H 姓名) R7( H 姓名 ,H 籍贯)(3).问题 3 请将该关系模式分解成 BCNF 的关系模式,确定主关系键。(分数:5.00)_正确答案:()解析:由于存在主属性

    28、部分依赖于码的问题,再采用投影分解法,R2 被分解为 R8、R9,将得到 BCNF 范式的关系模型: R8( 身份证号 , H 身份证号 , 电话号码 ) R9( 身份证号 , 电话号码 ) R3( 身份证号 ,姓名,家庭住址) R5( 电话号码 ,型号) R6( H 身俭正号 ,H 姓名) R7( H 姓名 ,H 籍贯)(4).问题 4 请简要说明各范式之间的关系。(文字和图标形式皆可)(分数:5.00)_正确答案:()解析:首先当一个关系模型 R 的所有属性都是不可分的基本数据项的时候,得到第一范式。 通过消除非主属性对候选码的部分函数依赖关系,得到第二范式。接着通过消除非主属性对候选码的

    29、传递依赖关系,得到第三范式。最后,通过消除对任何属性对码的部分函数依赖和传递函数依赖得到 BCNF 范式。 解析 关系数据库规范化;关系模式的分解。四、试题四(总题数:1,分数:1.00)1.【问题 3】 (1)部门关系模式存在什么问题?请用 100 字以内的文字阐述原因。为了解决这个问题可将关系模式分解,分解后的关系模式的关系名依次取部门_A、部门_B、 (2)假定月工作业绩关系模式为:月工作业绩(职员代码,年月,工作时间),请给出“杳询职员代码、职员名、年月、月工资”的 SQL 语句。 (分数:1.00)_正确答案:()解析:(1)部门关系模式属于 2 范式(或 2NF),该关系模式存在冗

    30、余问题,因为某部门有多少个办公室,部门代码、部门名、起始年月、终止年月就要重复多少次。 为了解决这个问题可将模式分解,分解后的关系模式为: 部门_A ( 部门代码 ,部门名,起始年月,终止年月) 部门_B (部门代码, 办公室 ,办公电话) (2)SELECT 职员代码,职员名,年月,工作时间*小时工资 AS 月工资 FROM 职员,职务,等级,月工作业绩 WHERE 职员.职务代码=职务.职务代码 AND 职务.等级代码=等级.等级代码 AND 等级.年月=月工作业绩.年月 AND 职员.职员代码=月工作业绩.职员代码; 解析 (1)部门关系模式存在的主要问题是数据冗余,因为部门关系模式属于

    31、 2 范式(或 2NF)。例如,假设某个部门有 10 个办公室,部门代码、部门名、起始年月、终止年月就要重复 10 次。为了解决这个问题可将模式分解,分解后的关系模式为: 部门_ A( 部门代码 ,部门名,起始年月,终止年月) 部门_ B(部门代码, 办公室 ,办公电话) (2)假定月工作业绩关系模式为:月工作业绩(职员代码,年月,工作时间),那么“查询职员代码、职员名、年月、月工资”的 SQL 语句如下; SELECT 职员代码,职员名,年月,工作时间*小时工资 AS 月工资 FROM 职员,职务,等级,月工作业绩 WHERE 职员.职务代码=职务.职务代码 AND 职务.等级代码;等级.等

    32、级代码 AND 等级.年月=月工作业绩.年月 AND 职员.职员代码;月工作业绩.职员代码;五、试题五(总题数:1,分数:15.00)阅读下列说明,根据要求回答问题。 说明 某银行的转账业务分为如下两类操作。 (1)读取账户 A 余额到变量 x,记为 x=R(A)。 (2)将变量 x 值写入账户 A 中的余额,记为 W(A,x)。 从账户 A 向账户 B 转账金额 x 元的伪代码操作序列为:a=R(A),a=a-x,W(A,a),b=R(B),b=b+x,W(B,b)。 针对上述业务及规则,完成下列问题。(分数:15.00)(1).根据业务规则,转账业务要么被全部执行,要么全部不执行,应如何保

    33、障? 假设参与转账的账户余额有大于等于 0 的约束,上述伪代码执行中可能出现什么情况?应如何处理?请用100 字以内的文字进行阐述。(分数:5.00)_正确答案:()解析:这是一道要求读者掌握事务基本概念及其应用的综合分析题,本题的解答思路如下。 根据银行业务规则,转账业务要么被全部执行,要么全部不执行。事务是一个完整的业务逻辑处理,原子性要求是为了保证现实业务的正确执行。若将转账业务作为一个完整的事务,则能保障其所有操作要么全部执行,要么全部不执行。 从账户 A 向账户 B 转账金额 x 元的伪代码操作序列为:a=R(A),a=a-x,W(A,a),b=R(B),b=b+x,W(B,b)。假

    34、设参与转账的账户余额有大于等于 0 的约束,当 A 账户金额小于转账金额 x 时,转账过程中会因为其余额小于 0 而违反该约束,不能被执行。此时需要回滚事务,转账业务不能被执行。(2).若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令 SLock(b)和独占锁指令 xLock(A)对数据 A 进行加锁,解锁指令 Unlock(A)对数据 A 进行解锁。 请补充上述转账业务的伪代码序列,使其满足 2PL 协议。(分数:5.00)_正确答案:()解析:这是一道要求读者掌握 2PL 协议实际应用的综合理解题,本题的解答思路如下。 在并发状态下,可能会相互干扰破坏事务的 ACID

    35、 属性,加锁机制是保障事务正确执行的一种机制。2PL协议能够保证事务并发状态下调度的正确性,即可串行化的调度。其内容: 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。 在释放一个封锁之后,事务不再申请和获得任何其他封锁。 若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令 SLock(B)和独占锁指令XLock(A)对数据 A 进行加锁,解锁指令 Unlock(A)对数据 A 进行解锁。用伪代码描述,即在 R()、W()操作之前分别加指令 SLock()和 XLock,不再使用数据之后再解锁,且第一个解锁指令后不能再有加锁指令。对于题干中转账业务的伪代码序

    36、列,使其满足 2PL 协议的伪代码程序如下。 XLock(A),a=R(A),a=a-x,W(A,a),XLock(B),b=R(B),b=b+x,W(B,b),Unlock(A),Unlock(B)(3).若用 SQL 语句编写的转账业务事务程序如下。 START TRANSACTION; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE UPDATE Accounts SET CurrentBalance=CurrentBalance - Amount WHERE AccountID=A; if error then ROLLBACK; COMMIT

    37、; UPDATE Accounts SET CurrentBalance=CurrentBalance + Amount WHERE AccountID=B; if error then ROLLBACK; CONMIT; 其中:Accounts 为账户表,CurrentBalance 为当前余额,Amount 为新存入的金额。 该事务程序能否保证数据的一致性?如不能,请说明原因并改正。请用 100 字以内的文字进行阐述。(分数:5.00)_正确答案:()解析:这是一道要求读者掌握 2PL 协议理论与 SQL 中的隔离级别,以及嵌入式 SQL 的编程实践题,本题的解答思路如下。事务的开始通常是隐性的,上一事务结束后第一条 SQL 语句为事务开始,结束必须以RollBack 或 Commit 显式地标明。在嵌入式 SQL 编程中,使用标准 SQL 定义的隔离级别来实现事物并发执行下的一致性控制,4 个隔离级别分别为 Read Uncommitted、Read committed、Repeatable Read 和Serializable。 此题中的转账程序应为一个完整的现实业务,就满足原子性。而第 7 行 COMMIT 将程序分为了两个事务,不满足现实业务需求,删除该行即可。


    注意事项

    本文(【计算机类职业资格】中级数据库系统工程师下午试题-5及答案解析.doc)为本站会员(hopesteam270)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开