2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)

上传人:汽*** 文档编号:490328592 上传时间:2023-01-05 格式:DOCX 页数:22 大小:437.48KB
返回 下载 相关 举报
2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)_第1页
第1页 / 共22页
2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)_第2页
第2页 / 共22页
2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)_第3页
第3页 / 共22页
2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)_第4页
第4页 / 共22页
2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)》由会员分享,可在线阅读,更多相关《2022年软考-数据库系统工程师考前模拟强化练习题97(附答案详解)(22页珍藏版)》请在金锄头文库上搜索。

1、2022年软考-数据库系统工程师考前模拟强化练习题(附答案详解)1. 单选题以下关于数据库事务的说法中,错误的是( )。问题1选项A.数据库事务是恢复和并发控制的基本单位B.数据库事务必须由用户显式地定义C.数据库事务具有ACID特性D.COMMIT和ROLLBACK都代表数据库事务的结束【答案】B【解析】数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的

2、,特别适用于多用户同时操作的数据库系统。COMMIT和ROLLBACK代表了数据库的正常提交和撤销提交。显式事务:显式事务又称自定义事务,是指用显式的方式定义其开始和结束的事务,当使用start transaction和 commit语句时则表示发生显式事务。隐式事务:隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开始是隐式的,事务的结束有明确的标记。即当用户进行数据操作时,系统自动开启一个事务,事务的结束则需手动调用commit或rollback语句来结束当前事务,在当前事务结束后又自动开启一个新事务。所以B选项是错误的。2. 单选题对于给定的关键字序列47, 34, 13, 1

3、2, 52, 38, 33, 27, 5,若用链地址法(拉链法)解决冲突来构造哈希表,且哈希函数为H(key)=key%11,则( )。问题1选项A.哈希地址为1的链表最长B.哈希地址为6的链表最长C.34和12在同一个链表中D.13和33在同一个链表中【答案】C【解析】链地址法(拉链法):在查找表的每一个记录中增加一个链域,链域中存放下一个具有相同哈希函数值的记录的存储地址。即利用链域将发生冲突的记录链接在一个链表里。本题对于给定的关键字序列47, 34, 13, 12, 52, 38, 33, 27, 5,哈希函数为H(key)=key%11,则其哈希值分别为3, 1, 2, 1, 8,

4、5, 0, 5, 5可以看到哈希地址为5的冲突最多,其对应的链表最长,A选项和B选项错误。34和12的哈希值都为1,放在同一个链表中,C选项正确。13的哈希值为2,33的哈希值为0,不在同一个链表中,D选项错误。3. 案例题阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】为防控新冠疫情,一些公共设施需要定期消毒,管理部门为高效完成工作并记录必要的工作信息,设计了相应的数据库,其中有一个表用来记录公共汽车的消毒情况,表的结构如下:消毒记录(日期,车牌号,行驶路线,消毒人员工号,消毒人员姓名)其中车牌号和消毒人员工号唯一,同一辆车保持固定的行驶路线。假设同一人员每天可以负责多

5、辆车的消毒工作。【问题1】(6分)给出消毒记录表中成立且左侧只有一个属性的所有函数依赖关系。题中设计的消毒记录表是否满足2NF请用100字以内的文字说明原因。【问题2】 (6分)如果要将消毒记录表规范化为满足3NF,请用100字以内的文字简要说明解决方案,并给出各个新表的主码和外码。【问题3】 (3分)如果每辆车每日有多次消毒,需要记录每次消毒的消毒时间,在问题2设计结果的基础上,如何在不破坏3NF且不增加冗余的前提下做到?请简单说明方案。【答案】【问题1】左侧只有一个属性的函数依赖关系有2个,分别为: 车牌号-行驶路线 消毒人员工号-消毒人员姓名 不满足2NF,根据题干可以得到消毒记录表的候

6、选键为(日期,车牌号),由于存在车牌号-行驶路线,属于部分依赖。根据2NF的要求,不存在非主属性对主属性的部分依赖,所以不满足2NF。【问题2】 由于消毒记录表不满足2NF,需要将消毒记录表进行拆分成多个表,拆分的表如下: 消毒记录1(车牌号,行驶路线) 消毒记录2(消毒人员工号,消毒人员姓名)消毒记录3(车牌号,日期,消毒人员工号) 由于拆分后的三个表都不存在非主属性对主属性的部分和传递函数依赖,所以都满足3NF。 【问题3】由于每辆车每日有多次消毒记录时间,可以在问题2的基础上增加表:消毒记录4(车牌号,日期,消毒时间)【解析】【问题1】左侧只有一个属性的函数依赖关系有2个,分别为: 车牌

7、号-行驶路线 消毒人员工号-消毒人员姓名 不满足2NF,根据题干可以得到消毒记录表的候选键为(日期,车牌号),由于存在车牌号-行驶路线,属于部分依赖。根据2NF的要求,不存在非主属性对主属性的部分依赖,所以不满足2NF。 【问题2】由于消毒记录表不满足2NF,需要将消毒记录表进行拆分成多个表,拆分的表如下:消毒记录1(车牌号,行驶路线)消毒记录2(消毒人员工号,消毒人员姓名)消毒记录3(车牌号,日期,消毒人员工号)由于拆分后的三个表都不存在非主属性对主属性的部分和传递函数依赖,所以都满足3NF。【问题3】由于每辆车每日有多次消毒记录时间,可以在问题2的基础上增加表:消毒记录4(车牌号,日期,消

8、毒时间)4. 单选题假设有两个数据库表,product 表和market 表,分别存放商品信息和市场需求信息。对SQL语句: selet * fom product, market where productp. id=markep.id的结果描述正确的是( )。如果想从market表中移除m id为MO3的记录,语句( )是正确的。如果要收回GRANT SELECT ON product to role_A WITH GRANT OPTION语句给role_A赋予的权限,使用语句( )。在product表、market表初始数据不变的情况下,以下SQL语句返回的结果有( )条记录。SELEC

9、T product.p_idFROM productWHERE product.p_num( SELECT sum (market.m_need) FROM market WHERE market.p_id = product.p_id);问题1选项A.查找市场所需商品的信息B.查找所有市场信息C.查找所有商品信息D.查找市场所需的商品信息以及相应的市场需求信息问题2选项A.REMOVE FROM market WHERE m id-*MO3B.DROP FROM market WHERE m id-MO3C.DELETE FROM market WHERE m id=MO3D.UPDATE

10、FROM market WHERE m id=MO3问题3选项A.REVOKE SELECT ON product FROM role AB.REVOKE SELECT ON product FROM role ACASCADEC.REVOKE SELECT ON product FROM role A WITH GRANT OPTIOND.REVOKE SELECT ON producet FROM role AALL问题4选项A.0B.1C.2D.3【答案】第1题:D第2题:C第3题:B第4题:D【解析】考查关系数据库的基础知识。Delete和收回权限的语法格式分别为:(1)DELETE

11、FROM 表名 WHERE 条件表达式(2)收回权限语句 REVOKE , n ON FROM , n RESTRICT|CASCADE因此,此题的删除语句为delete from,收回权限用REVOKE SELECT ON product FROM role A CASCADE。5. 案例题阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某商业银行账务系统的部分关系模式如下:账户表:Account (ano, aname, balance),其中属性含义分别为:账户号码,账户名称和账户余额。交易明细表:TranDetails (too, ano, ttime, topt

12、r, amount, ttype),其中属性分别为:交易编号,账户号码,交易时间,交易操作员,交易金额,交易类型(1-存款,2-取款,3-转账)。余额汇总表:AcctSums (adate, atime, allamt),其中属性分别为:汇总日期,汇总时间,总余额。常见的交易规则如下:存/取款交易:操作员核对用户相关信息,在系统上执行存/取款交易。账务系统增加/ 减少该账户余额/并在交易明细表中增加一条存/取款交易明细。转账交易:操作员核对用户相关信息,核对转账交易账户信息,在系统上执行转账交易。账务系统对转出账户减少其账户余额,对转入账户增加其账户余额,并在交易明细表中增加一条转账交易明细。

13、余额汇总交易:将账户表中所有账户余额累计汇总。假定当前账户表中的数据记录如表5-1所示。表5-1请根据上述描述,回答以下问题。【问题1】(3分)假设在正常交易时间,账户上在进行相应存取款或转账操作时,要执行余额汇总交易。下面是用SQL实现的余额汇总程序,请补全空缺处的代码。要求(不考虑并发性能)在保证余额汇总交易正确性的前提下,不能影响其他存取款或转账交易的正确性。CREATE PROCEDURE AcctSum(OUT: Amts DOUBLE)BEGINSET TRANSACTION ISOLATION LEVEL( a );BEGIN TRANSACTION;SELECT sum(bal

14、ance) INTO : Amts FROM Accounts; if error/ error是由DBMS提供的上一句SQL的执行状态 BEGINROLLBACK;return -2;ENDINSERT INTO AcctSumsVALUES (getDATE(), getTIME(), ( b ));if error / error是由DBMS提供的上一句SQL的执行状态BEGINROLLBACK; return-3; END( c );END【问题2】(8分)引入排它锁指令LX()和解锁指令UX(),要求满足两段锁协议和提交读隔离级别。假设在进行余额汇总交易的同时,发生了一笔转账交易。从101账户转给104账户400元。 这两笔事务的调度如表5-2所示。表5-2 转账汇总部分事务调度表(1)请补全表中的空缺处(a)、(b);(2)上述调度结束后,汇总得到的总余额是多少?(3)该数据是否正确?请说明原因。【问题3】(4分)在【问题2】的基础上,引入共享锁指令LS()和解锁指令US()。对【问题2】中的调度进行重写,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号