1、 软考数据库系统工程师交流群:424778193 微信:educity_cn 中级数据库系统工程师下午试题模拟中级数据库系统工程师下午试题模拟16 试题一试题一 阅读以下说明和图,根据要求回答问题。说明 某电子商务系统采用以数据库为中心的集成方式改进购物车的功能,详细需求如下:1加入购物车。顾客浏览商品,单击加入购物车,根据商品标识从商品表中读取商品信息,并更新购物车表。2浏览购物车。顾客提交浏览购物车请求后,显示出购物车表中的商品信息。3提交订单。顾客单击提交订单请求,后台计算购物车表中商品的总价(包括运费)加入订单表,将购物车表中的商品状态改为待付款,显示订单详情。若商家改变价格,则刷新后
2、可看到更改后的价格。4改变价格。商家查看订购自家商品的订单信息,根据特殊优惠条件修改价格,更新订单表中的商品价格。5付款。顾客单击付款后,系统先根据顾客表中关联的支付账户,将转账请求(验证码、价格等)提交给支付系统(如信用卡系统)进行转账;然后根据转账结果返回支付状态并更改购物车表中商品的状态。6物流跟踪。商家发货后,需按订单标识添加物流标识(物流公司、运单号);然后可根据顾客或商家的标识以及订单标识,查询订单表中的物流标识,并从相应物流系统查询物流信息。7生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商品分类表中读取数据,调用第三方服务Crystal Reports生成相关报
3、表。8维护信息。管理员维护(增、删、改、查)顾客表、商品分类表和商品表中的信息。现采用结构化方法实现上述需求,在系统分析阶段得到如图1所示的顶层数据流图和如图2所示的0层数据流图。图1 顶层数据流图 软考数据库系统工程师交流群:424778193 微信:educity_cn 图2 0层数据流图 1、使用说明中的词语,给出图1中的实体E1E4的名称。2、使用说明中的词语,给出图2中的数据存储D1D4的名称。3、图2中缺失了数据流,请用说明或图2中的词语,给出其起点和终点。4、根据说明,给出数据流“转账请求”、“顾客订单物流查询请求”和“商家订单物流查询请求”的各组成数据项。试题二试题二 阅读下列
4、说明,根据要求回答问题。软考数据库系统工程师交流群:424778193 微信:educity_cn 说明 天津市某银行信息系统的数据库部分关系模式如下所示。客户(客户号,姓名,性别,地址,邮编,电话)账户(账户号,客户号,开户支行号,余额)支行(支行号,支行名称,城市,资产总额)交易(交易号,账户号,业务金额,交易日期)其中,业务金额为正值表示客户向账户存款,为负值表示取款。5、以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客户关系的唯一标识,且不能为空。账户余额不能小于1.00元。请将空缺部分补充完整。CREATE TABLE 账户(账户号 CHAR(19)(a),客户号
5、CHAR(10)(b),开户支行号 CHAR(6)NOT NuLL,余额 NUMBER(8,2)(c);6、现银行决策者希望查看在天津市各支行开户,且2009年9月使用了银行存取服务的所有客户的详细信息,请补充完整相应的查询语句(交易日期形式为2000-01-01)。SELECT DISTINCT 客户.*FROM 客户,账户,支行,交易 WHERE 客户.客户号=账户.客户号 AND 账户.开户支行号=支行.支行号 AND (d)AND 交易.账户号=账户.账户号 AND (e);上述查询优化后的语句如下,请补充完整。SELECT DISTINCT 客户.*FROM 客户,账户,(f)AS
6、新支行,(g)AS 新交易 WHERE 客户.客户号=账户.客户号 AND 账户.开户支行号=新支行.支行号 AND 新交易.账户号=账户.账户号;(2)假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息,并按客户号降序排列。SELECT*FROM 客户 WHERE (h)(SELECT 客户号 FROM 账户 GROUP BY 客户号 (i)ORDER BY (j);7、为账户关系增加一个属性“账户标记”,默认值为0,取值类型为整数,并将当前账户关系中所有记录的“账户标记”属性值修改为0。请补充相关的SQL语句。ALTER TABLE 账户 (k)DEFAULT
7、 0;UPDATE 账户 (l);(2)对于每笔金额超过10万元的交易,其对应账户标记属性值加1,给出触发器实现的方案。CREATE TRIGGER交易_触发器 (m)ON交易 REFERENCING NEW ROW AS 新交易 FOR EACH ROW WHEN (n)BEGIN ATOMIC 软考数据库系统工程师交流群:424778193 微信:educity_cn UPDATE 账户 SET 账户标记=账户标记+1 WHERE (o);COMMIT WORK;END;试题三试题三 阅读以下说明,根据要求回答问题。说明 某快递公司为了方便管理公司物品运送的各项业务活动,需要构建一个物品运
8、送信息管理系统。需求分析结果 8快递公司有多个分公司,分公司信息包括分公司编号、名称、经理、办公电话和地址。每个分公司可以有多名员工处理分公司的日常业务,每名员工只能在一个分公司工作。每个分公司由一名经理负责管理分公司的业务和员工,系统需要记录每个经理的任职时间。9员工信息包括员工号、姓名、岗位、薪资、手机号和家庭地址。其中,员工号唯一标识员工信息的每一个元组。岗位包括经理、调度员、业务员等。业务员根据客户提交的快件申请单进行快件受理事宜,一个业务员可以受理多个客户的快件申请,一个快件申请只能由一个业务员受理。调度员根据已受理的申请单安排快件的承运事宜,例如:执行承运的业务员、运达时间等。一个
9、业务员可以执行调度员安排的多个快件的承运业务。10客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,客户号唯一标识客户信息的每一个元组。当客户要寄快件时,先要提交快件申请单,申请号由系统自动生成。快件申请信息包括申请号、客户号、发件人、发件人电话、快件名称、运费、发出地、收件人、收件人电话、收件地址。其中,一个申请号对应唯一的一个快件申请,一个客户可以提交多个快件申请,但一个快件申请由唯一的一个客户提交。概念模型设计 根据需求阶段收集的信息,设计的实体联系图如图1所示。图1 某物品运送信息管理系统实体练习图(不完整)关系模式设计 分公司(分公司编号,名称,经理
10、,办公电话,地址)员工(员工号,姓名,(a),岗位,薪资,手机号,家庭地址)客户(客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号)申请单(b),发件人,发件人电话,发件人地址,快件名称,运费,收件人,收件人电话,收件地址,受理标志,业务员)安排承运(c),实际完成时间,调度员)软考数据库系统工程师交流群:424778193 微信:educity_cn 8、根据问题描述,补充5个联系,完善图5。7的实体联系图。联系名可用联系1、联系2、联系3、联系4和联系5代替,联系的类型分为“1:1”、“1:n”和“m:n”(或“1:1”、“1:*”和“*:*”)。9、(1)根据实体联系图,
11、将关系模式中的空(a)(c)补充完整。(2)给出员工、申请单和安排承运关系模式的主键和外键。10、(1)客户关系的通信地址可以进一步分为邮编、省、市、街道,那么该属性是否属于简单属性,为什么?请用100字以内的文字说明。(2)假设分公司需要增设一个经理的职位,那么分公司与经理之间的联系类型应修改为 (d),分公司的主键应修改为 (e)。试题四试题四 阅读下列说明,根据要求回答问题。说明 某旅行社拟开发一套旅游管理系统,以便管理旅游相关的信息。11旅行社可发布旅游线路的信息,包含线路的价格、天数、住宿情况,以及具体的行程安排等。不同的线路参观的景点及住宿情况不相同,如表1所示。表表1 旅游线路信
12、息旅游线路信息 线路编号 SO-501 价格 2000 天数 4 日称号 景点 城市 住宿 D1 接站集合,天安门,紫禁城,颐和园 北京 建国饭店 D2 上午参观北京胡同,下午飞往西安 北京,西安 花园饭店 D3 上午参观兵马俑,下午参观大雁塔 西安 花园饭店 D4 上午参观钟鼓楼,下午返回 西安 12游客与旅行社沟通,选择适合自己的线路,并由旅行社为其生成订单,以记录游客联系人的姓名、身份证号、联系方式、人数、所选线路、导游安排和票务信息。旅行社为游客在行程中的每个城市安排一个导游,负责游客在该城市的具体旅行安排。同一城市的负责导游相同,不同城市的负责导游有可能不同。13旅行社的每位员工只属
13、于一种固定的员工类别,系统可记录员工的多部手机号。旅行社按月统计导游每月的带团人数和游客投诉次数,以计算导游的当月月薪。根据上述需求,初步设计了旅游信息数据库,其关系模式如图所示。软考数据库系统工程师交流群:424778193 微信:educity_cn 关系模式中主要属性的含义及约束,如表2所示。表表2 主要属性含义及约束主要属性含义及约束 属性 含义及约束 线路编号 唯一标识某条旅游的线路信息 日程号 旅游行程中的某一天,如:D1代表第1天,Dn代表第n天 住宿 不同线路游客在不同城市的住宿情况说明 城市 旅游行程中某一天游客所在的城市名称 景点 旅游行程中某一天游客浏览的景点名称 人数
14、某个订单的总游客数 订单价格 某个订单的总价 车票班次 旅行过程中的车票班次,包括火车车次、航 班班次等 车票类型 车票类型分为飞机和火车 票数 针对某订单某班次的车票数量 总价格 针对某订单某班次的车票总价格 计薪月 某员工的被投诉次数、月薪所对应的年 份和月份,如2006年5月 手机号 允许一个员工有多个手机号 被投诉次数 某员工某计薪月的被投诉次数 带团人数 某员工某计薪月的带团人数总和 月薪 某员工某计薪月的薪水金额 员工类别 员工类别分为导游或其他 软考数据库系统工程师交流群:424778193 微信:educity_cn 11、对于关系“线路信息”,请回答以下问题。(1)列举出所有
15、不属于任何候选键的属性(非键属性)。(2)关系“线路信息”是否为BCNF范式?请用60字以内的文字简要叙述理由。12、对于关系“订单信息”,请回答以下问题。(1)“订单信息”是否为第2范式?请用100字以内的文字简要说明会产生什么问题。(2)把“订单信息”分解为第3范式,分解后的关系名依次为:订单信息1,订单信息2 (3)列出分解后的各关系模式的主键。13、对于关系“员工信息”,请回答以下问题。(1)关系“员工信息”是否为第4范式?请用100字以内的文字叙述理由。(2)若“员工信息”不是第4范式,将其分解为第4范式,分解后的关系名依次为:员工信息1,员工信息2 试题五试题五 阅读下列说明,根据
16、要求回答问题。说明 某银行的转账业务分为如下两类操作。14读取账户A余额到变量x,记为x=RA.。15将变量x值写入账户A中的余额,记为W(A,x)。从账户A向账户B转账金额x元的伪代码操作序列为:a=RA.,a=a-x,W(A,a),b=RB.,b=b+x,W(B,b)。针对上述业务及规则,完成下列问题。14、根据业务规则,转账业务要么被全部执行,要么全部不执行,应如何保障?假设参与转账的账户余额有大于等于0的约束,上述伪代码执行中可能出现什么情况?应如何处理?请用100字以内的文字进行阐述。15、若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令SLock(b)和独占锁
17、指令xLockA.对数据A进行加锁,解锁指令UnlockA.对数据A进行解锁。请补充上述转账业务的伪代码序列,使其满足2PL协议。16、若用SQL语句编写的转账业务事务程序如下。START TRANSACTION;SET TRANSACTION ISOLATION LEVEL SERIALIZABLE UPDATE Accounts SET CurrentBalance=CurrentBalance-Amount WHERE AccountID=A;if error then ROLLBACK;COMMIT;UPDATE Accounts SET CurrentBalance=CurrentB
18、alance+Amount WHERE AccountID=B;if error then ROLLBACK;CONMIT;其中:Accounts为账户表,CurrentBalance为当前余额,Amount为新存入的金额。该事务程序能否保证数据的一致性?如不能,请说明原因并改正。请用100字以内的文字进行阐述。软考数据库系统工程师交流群:424778193 微信:educity_cn 答案:试题一试题一 1、由题干中的关键信息“(3)提交订单若商家改变价格,则刷新后可看到更改后的价格”、“(4)改变价格。商家查看订购自家商品的订单信息,根据特殊优惠条件修改价格,更新订单塞中的商品价格”,结合
19、如图2所示的0层数据流图中与外部实体E1相关的输入数据流“商家订单信息”、输出数据流“订单新价格”和处理“改变价格”,可知图1中实体E1的名称是“商家”。根据题干中的关键信息“(6)物流跟踪。商家发货后,需按订单标识添加物流标识(物流公司、运单号);然后可根据顾客或商家的标识以及订单标识,查询订单表中的物流标识”,结合图2中与外部实体E1相关的输入数据流“商家订单物流信息”、输出数据流“商家订单物流标识”和“商家订单物流查询请求”,以及处理“物流跟踪”,也可知实体E1的名称是“商家”。由题干中“(5)付款。顾客单击付款后将转账请求(验证码、价格等)提交给支付系统(如信用卡系统)进行转账;然后根
20、据转账结果返回支付状态”等关键信息,结合图2中与外部实体E2相关的输入数据流“转账请求”、输出数据流“转账结果”和处理“付款”,可知图1中实体E2的名称是“支付系统”。根据题干中“(6)物流跟踪。商家发货后,需按订单标识添加物流标识(物流公司、运单号)并从相应物流系统查询物流信息”等关键信息,结合图2中与外部实体E3相关的输入数据流“运单号”、输出数据流“物流信息”和处理“物流跟踪”,可知图1中实体E3的名称是“物流系统”。由题干中的关键信息“(7)生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商品分类表中读取数据,调用第三方服务Crystal Reports生成相关报表”等关
21、键信息,结合图2中与外部实体E4相关的输入数据流“报表数据”、输出数据流“报表”和处理“生成报表”,可知图1中实体E4的名称是“第三方服务(或Crystal Reports)”。2、基于问题1的分析结果,根据题干中“(3)提交订单。顾客单击提交订单请求,后台计算购物车表中商品的总价(包括运费)加入订单表”、“(4)改变价格更新订单表中的商品价格”、“(6)物流跟踪查询订单表中的物流标识”等关键信息,结合图2中与数据存储D1相关的处理“提交订单”、“改变价格”、“物流跟踪”,可知数据存储D1的名称是“订单表”。由题干中的关键信息“(1)加入购物车根据商品标识从商品表中读取商品信息”、“(7)生成
22、报表从订单表、商品表以及商品分类表中读取数据”、“(8)维护信息。管理员维护(增、删、改、查)顾客表、商品分类表和商品表中的信息”等,结合图2中与数据存储D2相关的处理“加入购物车”、“生成报表”、“维护信息”,可知数据存储D2的名称是“商品表”。根据题干中的关键信息“(7)生成报表从订单表、商品表以及商品分类表中读取数据”、“(8)维护信息。管理员维护(增、删、改、查)顾客表、商品分类表和商品表中的信息”等,结合图2中与数据存储D3相关的处理“生成报表”、“维护信息”,可知数据存储D3的名称是“商品分类表”。由题干中“(1)加入购物车并更新购物车表”、“(2)浏览购物车显示出购物车表中的商品
23、信息”、“(3)提交订单将购物车表中的商品状态改为待付款”等关键信息,结合图2中与数据存储D4相关的处理“加入购物车”、“浏览购物车”、“提交订单”,可知数据存储D4的名称是“购物车表”。3、基于问题1和问题2的分析结果,由题干中“(3)提交订单。顾客单击提交订单请求,后台计算购物车表中商品的总价(包括运费)加入订单表”等关键信息,结合图2中外部实体“顾客”、处理“提交订单”和数据存储“D1(或订单表)”之间的逻辑关系,可知图2中缺失了一条起点为“D4(或购物车表)”、终点为“提交订单”的数据流“商品价格”。根据题干中“(5)付款。顾客单击付款后,系统先根据顾客表中关联的支付账户”等关键信息,
24、结合图2中外部实体“顾客”、处理“付款”和数据存储“顾客表”之间的逻辑关系,可知图2中缺失了一条起点为“顾客表”、终点为“付款”的数据流“支付账户”。由题干中的关键信息“(5)付款。顾客单击付款后然后根据转账结果返回支付状态并更改购物 软考数据库系统工程师交流群:424778193 微信:educity_cn 车表中商品的状态”等,结合图2中外部实体“顾客”、处理“付款”和数据存储“D4(或购物车表)”之间的逻辑关系,可知图2中缺失了一条起点为“付款”、终点为“D4(或购物车表)”的数据流“商品状态”。根据题干中的关键信息“(7)生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商
25、品分类表中读取数据”等,结合图2中外部实体“管理员”和“E1(或商家)”、处理“生成报表”、数据存储“D1(或订单表)”、“D2(或商品表)”和“D3(或商品分类表)”之间的逻辑关系,可知图2中缺失了一条起点为“D1(或订单表)”、终点为“生成报表”的数据流“订单信息”。4、基于上题的分析结果,根据题干中“(5)付款。顾客单击付款后,系统先根据顾客表中关联的支付账户,将转账请求(验证码、价格等)提交给支付系统”等关键信息,可知数据流“转账请求”至少包含的数据项有:账号信息、验证码、价格。由题干中关键信息“(6)物流跟踪。商家发货后,需按订单标示添加物流标示(物流公司、运单号);然后可根据顾客或
26、商家的标示以及订单标示,查询订单表中的物流标示,并从相应物流系统查询物流信息”等,可知数据流“顾客订单物流查询请求”至少包含的数据项有:顾客标识、订单标识;数据流“商家订单物流查询请求”至少包含的数据项有:商家标识、订单标识。试题二试题二 5、这是一道要求读者掌握关系模型的完整性约束的综合分析题,本题的解答思路如下。由题干中的关键信息“客户号为客户关系的唯一标识”可得,属性“客户号”可以作为“客户”关系模式的主键。同理并结合常识可得,属性“支行号”是“支行”关系模式的主键;属性“交易号”是“交易”关系模式的主键,属性“账户号”是其外键;由题干中的关键信息“账户号唯一识别一个账户”可得,属性“账
27、户号”可以作为“账户”关系模式的主键,属性“客户号”和“开户支行号”是其外键。由以上分析可知,在创建“账户”关系模式的SQL语句时,由于“账户号”为“账户”关系模式的主键,即不能为空且唯一标识一条账户信息,因此(a)空缺处需要使用PRIMARY KEY对属性“账户号”进行主键约束。其中,关键字:PRIMARY KEY可替换为NOT NULL UNIQUE、NOTNULL PRIMARY KEY等。由于“客户号”是“客户”关系模式的主键,也是“账户”关系模式的外键,因此(b)空缺处需要用FOREIGN KEY对属性“客户号”进行外键约束,应填入“FOREIGN KEY(客户号)REFERENCE
28、S客户(客户号)”。由题干中的关键信息“账户余额不能小于1.00元”可知,需要限制“账户”关键模式中“余额”属性值的范围,可以通过CHECK约束来实现,即(c)空缺处应填入“CHECK(余额1.00)”。6、这是一道要求读者掌握SQL数据操作语言(DML)的综合应用题,本题的解答思路是如下。(1)依题意,若要满足题干的查询要求,则需在表连接条件的基础上,再添加两个条件:支行关系的城市属性值为“天津市”,即(d)空缺处应填入“支行.城市=天津市”;在2009年9月存在交易记录,由于交易日期形式为2000-01-01,因此需要通过模糊匹配来实现,用LIKE关键词和通配符表示,即(e)空缺处应填入“
29、交易.交易日期LIKE2009-09-%”。WHERE子句中条件的先后顺序会对执行效率产生影响。假如解析器是按照先后顺序依次解析并列条件,优化的原则是:表之间的连接必须出现在其他WHERE条件之后,那些可以过滤掉最多条记录的条件尽可能出现在WHERE子句中其他条件的前面。据此,可以重新组织WHERE条件的顺序或者通过嵌套查询以缩小连接记录数目的规模,从而实现相应的查询优化过程。依题意所给出的程序语句,需要添加两个子查询以缩小参与连接的记录的数目,即筛选出天津市的所有支行,(f)空缺处应填入(SELECT*FROM支行WHERE 城市=天津市),而且找到2009年9月发生的交易记录,(g)空缺处
30、应填入(SELECT*FROM 交易 WHERE 交易日期 LIKE2009-09-%),然后再进行连接查询。(2)依题意要求,可通过子查询实现“当前所有账户余额之和超过百万的客户信息”的查询,即(h)空缺处应填入“客户号 IN”;对SUM函数计算的结果应通过HAVING条件语句进行约束,即(i)空缺处应填入“HAVING SUM(余额)1000000.00”;降序排列可以通过关键字DESC来实现,即(i)软考数据库系统工程师交流群:424778193 微信:educity_cn 空缺处应填入“客户号DESC”。7、这是一道要求读者掌握SQL语句及触发器机制应用编程的综合分析题,本题的解答思路
31、如下。(1)关系模式的修改通过ALTER语句来实现,使用关键字ADD添加相应的属性,即(k)空缺处应填入“ADD账户标记INT”;使用关键字SET修改属性值,即(l)空缺处应填入“SET账户标记=0”。(2)依题意,在“交易”关系模式中插入一条记录时,触发器应能够自动执行,因此需要创建基于INSERT类型的触发器,即(m)空缺处应填入“AFTER INSERT”;其触发条件是新插入交易记录的金额属性值大于100000,即(n)空缺处应填入“新交易.金额100000.00”;最后(o)空缺处应添加表连接条件“账户.账户号=新交易.账户号”。试题三试题三 8、这是一道要求读者掌握数据库的概念结构设
32、计的综合分析题,本题的解答思路如下。仔细阅读题干给出的说明信息,由其中关键信息“(1)每个分公司可以有多名员工处理分公司的日常业务,每名员工只能在一个分公司工作”等可知,图1中实体“分公司”与实体“员工”之间存在联系“隶属”,其联系的类型为一对多(1:*)。基于题干给出的关键信息“(1)每个分公司由一名经理负责管理分公司的业务和员工”和常识可知,图1中实体“分公司”与子类实体“经理”之间存在联系“负责”,其联系的类型为一对一(1:1)。根据题干给出的“(3)一个客户可以提交多个快件申请,但一个快件申请由唯一的一个客户提交”等关键信息可知,图1中实体“客户”与实体“申请单”之间存在联系“提交”,
33、其关联的类型为一对多(1:*)。结合题干给出的关键信息“(2)一个业务员可以受理多个客户的快件申请,一个快件申请只能由一个业务员受理”等可知,图1中子类实体“业务员”与实体“申请单”之间存在关联“受理”,其关联的类型为一对多(1:*)。基于题干给出的“(2)调度员根据已受理的申请单安排快件的承运事宜,例如:执行承运的业务员、运达时间等。一个业务员可以执行调度员安排的多个快件的承运业务”等关键信息,结合常识可知,图1中子类实体“调度员”、“业务员”与实体“申请单”三者之间存在联系“安排承运”,其关联的类型为多对多对多(*:*:*)。整理以上分析结果,结合图可得出完整的物品运送信息管理系统实体联系
34、图,如图2所示。图2 某物品运送信息管理系统实体联系图 9、这是一道要求读者掌握数据库的逻辑结构设计的综合理解题,本题的解答思路如下。基于问题1的分析结果,结合常识可知,在关系模式“分公司(分公司编号,名称,经理,办公电话,地址1”中,属性“分公司编号”唯一标识每一条“分公司”的数据记录,因此它是“分公司”关系模式的主键。属性“经理”是“分公司”关系模式的外键。对于图2中子类实体“员工”与实体“分公司”之间存在的一对多(1:*)联系“隶属”,根据E-R模 软考数据库系统工程师交流群:424778193 微信:educity_cn 型到关系模式的转换规则,在多端实体“员工”关系模式中应加入1端实
35、体“分公司”的主键“分公司编号”(即(a)空缺处所填写的内容)。该属性“分公司编号”作为“员工”关系模式的外键。结合常识,属性“员工号”唯一标识每一条“员工”的数据记录,因此它是“员工”关系模式的主键。依据题干给出的关键信息“客户号唯一标识客户信息的每一个元组”可知,属性“客户号”是“客户”关系模式的主键。结合题干给出的关键信息“(3)快件申请信息包括申请号、客户号、发件人、发件人电话、快件名称、运费、发出地、收件人、收件人电话、收件地址。其中,一个申请号对应唯一的一个快件申请”可知,属性“申请号”是“申请单”关系模式的主键。“申请号”是(b)空缺处所填写的内容之一。对于图2中实体“客户”与实
36、体“申请单”之间存在的一对多(1:*)联系“提交”,根据E-R模型到关系模式的转换规则,在多端实体“申请单”关系模式中应加入1端实体“客户”的主键“客户号”(即(b)空缺处所填写的内容之一)。属性“客户号”、“业务员”作为“申请单”关系模式的外键。根据E-R模型到关系模式的转换规则,联系“安排承运”需要单独转换成一个独立的关系模式,其属性内容包括3端实体类型的主键(作为外键)申请号、业务员、调度员,并加上联系类型自身的属性“运达时间”。关系模式“安排承运”的主键为申请号、业务员、调度员、运达时间4个属性的组合。10、这也是一道要求读者掌握数据库的逻辑结构设计的综合理解题,本题的解答思路如下。在
37、E-R模型中,实体通过一组属性来表示,而属性是实体集中每个成员具有的性质描述。根据属性取值的不同将其划分为简单属性、复合属性、单值属性、多值属性、NULL属性和派生属性等。依题意,若客户关系的通信地址可进一步细分为邮编、省、市、街道,则该属性不属于简单属性,属于复合属性。因为简单属性是指不能再划分为更小的部分的属性,而复合属性是指可以再划分为更小的部分(即划分为别的属性)的属性。假设分公司需要增设一个经理的职位,则一家分公司的业务和员工由两名经理共同负责管理,每名经理只能在一家分公司工作。此时,实体“分公司”与子类实体“经理”之间的联系“负责”,其联系的类型变更为一对多(1:*)。“分公司”关
38、系模式的主键应修改为“分公司编号,经理”。试题四试题四 11、这是一道要求读者掌握数据库关系模式规范化理论中非主属性和BCNF范式的综合分析题,本题的解答思路如下。(1)依题意,由表2中的关键信息“线路编号:唯一标识某条旅游的线路信息”可知,属性“线路编号”是“线路信息”关系模式的主键,而属性“价格”和“天数”是不属于该关系模式任何候选键的属性(非键属性)。(2)根据BCNF范式的要求:每一个函数依赖的决定因素都包含码。而“线路信息”关系模式存在“线路编号(价格,天数)”函数依赖关系,即非主属性(价格,天数)完全函数依赖于码且不传递依赖于码,并且仅有一个候选码,为单属性,因此该关系模式可以达到
39、BCNF范式。12、这是一道要求读者掌握数据库关系模式规范化理论中2NF和3NF的综合应用题,本题的解答思路如下。由“订单信息”关系模式和题干中的关键信息“旅行社为游客在行程中的每个城市安排一个负责导游同一城市的负责导游相同,不同城市的负责导游有可能不同”可知,属性“订单号,负责导游工号”是“订单信息”关系模式的主键,而该关系模式不属于任何候选键的属性(非键属性)为“线路编号,联系人名称,联系人身份证号,人数,联系方式,订单价格,出发时间,负责城市”。“订单信息”关系模式的函数依赖为:(订单号,负责导游工号)负责城市 订单号(线路编号,联系人身份证号,人数,订单价格,出发时间)联系人身份证号(
40、联系人名称,联系方式)根据第2范式(2NF)的要求:不存在非主属性对码的部分依赖。而“订单信息”关系模式存在非主属性对码的部分依赖,因此该关系模式不属于2NF,会造成插入异常、删除异常和修改复杂(或修改异常)等问题。根据第3范式(3NF)的要求:每一个非主属性既不部分依赖于码,也不传递依赖于码。因此,需 软考数据库系统工程师交流群:424778193 微信:educity_cn 要根据3NF的要求和“订单信息”关系模式的函数依赖,对“订单信息”关系模式进行如下分解以满足3NF。的要求。订单信息1(订单号,线路编号,联系人身份证号,出发时间,订单价格,人数)订单信息2(联系人身份证号,联系人名称
41、,联系方式)订单信息3(订单号,负责导游工号,负责城市)其中,带下划线的属性为分解后的各关系模式对应的主键。13、这是一道要求读者掌握关系模式规范化理论中4NF的综合分析题,本题解答思路如下。(1)由“员工信息”关系模式和题干中的关键信息可知,属性“员工工号,计薪月”是“员工信息”关系模式的主键,而该关系模式不属于任何候选键的属性(非键属性)为“姓名,出生日期,员工类别,手机号,被投诉次数,带团人数,月薪”。“员工信息”关系模式的函数依赖为:员工工号姓名,出生日期,员工类别 员工工号手机号 (员工工号,计薪月)被投诉次数,带团人数,月薪 根据第4范式的要求:不允许有非平凡且非函数依赖的多值依赖
42、。由“员工信息”关系模式的函数依赖可知,由于“员工信息”关系模式存在部分依赖,因此该关系模式不满足第2范式(2NF);由于“员工信息”关系模式也存在多值依赖,因此该关系模式不满足第4范式(4NF)。(2)根据第4范式(4NF)的要求和“员工信息”关系模式的函数依赖,对“员工信息”关系模式进行如下分解以满足4NF的要求。员工信息1(员工工号,姓名,出生日期,员工类别)员工信息2(员工工号,手机号)员工信息3(员工工号,计薪月,被投诉次数,带团人数,月薪)其中,带下划线的属性为相应关系模式的主键。试题五试题五 14、这是一道要求读者掌握事务基本概念及其应用的综合分析题,本题的解答思路如下。根据银行
43、业务规则,转账业务要么被全部执行,要么全部不执行。事务是一个完整的业务逻辑处理,原子性要求是为了保证现实业务的正确执行。若将转账业务作为一个完整的事务,则能保障其所有操作要么全部执行,要么全部不执行。从账户A向账户B转账金额x元的伪代码操作序列为:a=R(A),a=a-x,W(A,a),b=R(B),b=b+x,W(B,b)。假设参与转账的账户余额有大于等于0的约束,当A账户金额小于转账金额x时,转账过程中会因为其余额小于0而违反该约束,不能被执行。此时需要回滚事务,转账业务不能被执行。15、这是一道要求读者掌握2PL协议实际应用的综合理解题,本题的解答思路如下。在并发状态下,可能会相互干扰破
44、坏事务的ACID属性,加锁机制是保障事务正确执行的一种机制。2PL协议能够保证事务并发状态下调度的正确性,即可串行化的调度。其内容:在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。在释放一个封锁之后,事务不再申请和获得任何其他封锁。若允许对同一账号同时进行转账,要保证转账程序的并发执行,引入共享锁指令SLock(B)和独占锁指令XLock(A)对数据A进行加锁,解锁指令Unlock(A)对数据A进行解锁。用伪代码描述,即在R()、W()操作之前分别加指令SLock()和XLock,不再使用数据之后再解锁,且第一个解锁指令后不能再有加锁指令。对于题干中转账业务的伪代码序列,使其满
45、足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)16、这是一道要求读者掌握2PL协议理论与SQL中的隔离级别,以及嵌入式SQL的编程实践题,本题的解答思路如下。事务的开始通常是隐性的,上一事务结束后第一条SQL语句为事务开始,结束必须以RollBack或Commit显式地标明。在嵌入式SQL编程中,使用标准SQL定义的隔 软考数据库系统工程师交流群:424778193 微信:educity_cn 离级别来实现事物并发执行下的一致性控制,4个隔离级别分别为Read Uncommitted、Read committed、Repeatable Read和Serializable。此题中的转账程序应为一个完整的现实业务,就满足原子性。而第7行COMMIT将程序分为了两个事务,不满足现实业务需求,删除该行即可。