2022软件水平考试-中级数据库系统工程师考试全真模拟卷43(附答案带详解)

上传人:住在山****ck 文档编号:99100839 上传时间:2022-05-31 格式:DOCX 页数:15 大小:21.88KB
收藏 版权申诉 举报 下载
2022软件水平考试-中级数据库系统工程师考试全真模拟卷43(附答案带详解)_第1页
第1页 / 共15页
2022软件水平考试-中级数据库系统工程师考试全真模拟卷43(附答案带详解)_第2页
第2页 / 共15页
2022软件水平考试-中级数据库系统工程师考试全真模拟卷43(附答案带详解)_第3页
第3页 / 共15页
资源描述:

《2022软件水平考试-中级数据库系统工程师考试全真模拟卷43(附答案带详解)》由会员分享,可在线阅读,更多相关《2022软件水平考试-中级数据库系统工程师考试全真模拟卷43(附答案带详解)(15页珍藏版)》请在装配图网上搜索。

1、2022软件水平考试-中级数据库系统工程师考试全真模拟卷(附答案带详解)1. 问答题:阅读下列说明,回答问题1 至问题3 ,将解答填入答题纸的对应栏内。【说明】某航空公司要开发一个订票信息处理系统,该系统的部分关系模式如下: 航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,票价) 折扣(航班编号,开始日期,结束日期,折扣) 旅客(身份证号,姓名,性别,出生日期,电话,VIP折扣) 购票(购票单号,身份证号,航班编号,搭乘日期,购票金额) 有关关系模式的属性及相关说明如下:(1)航班表中的起飞时间和到达时间不包含日期,同一航班不会在一天出现两次及两次以上;(2)各航空公司会根据旅客

2、出行淡旺季适时调整机票的折扣,旅客购买机票的购票金额计算公式为:票价折扣VIP折扣,其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票后被修改。VIP折扣值的计算由函数float vip_value(char18身份证号)完成。根据以上描述,回答下列问题。 【问题1】请将如下创建购票关系的SQL语句的空缺部分补充完整,要求指定关系的主键、外键,以及购票金额大于零的约束。 CREATE TABLE 购票( 购票单号 CHAR(15) _(a)_, 身份证号 CHAR(18), 航班编号 CHAR(6), 搭乘日期 DATE, 购票金额 FLOAT _(b)_, _(c)

3、_, _(d)_, );【问题2】(1)身份证号为210000196006189999的客户购买了2013年2月18日CA5302航班的机票,购票单号由系统自动生成。下面的SQL语句将上述购票信息加入系统中,请将空缺部分补充完整。INSERT INTO 购票(购票单号,身份证号,航班编号,搭乘日期,购票金额) SELECT 201303105555,210000196006189999,CA5302,2013/2/18, _(e)_ FROM 航班,折扣,旅客 WHERE _(f)_ AND 航班.航班编号=CA5302 AND 2013/2/18 BETWEEN 折扣.开始日期 AND 折扣

4、.结束日期 AND 旅客.身份证号=210000196006189999;(2)需要用触发器来实现VIP折扣的修改,调用函数vip_value( )来实现。请将如下SQL语句的空缺部分补充完整。 CREATE TRIGGER VIP_TRG AFTER _(g)_ ON _(h)_ RE FERENCING new row AS nrow FOR EACH row BEGIN UPDATE 旅客 SET _(i)_ WHERE _(j)_;END【问题3】请将如下SQL语句的空缺部分补充完整。(1)查询搭乘日期在2012年1月1日至2012年12月31日之间,且合计购票金额大于等于10000元

5、的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。 SELECT 旅客.身份证号,姓名,SUM(购票金额) FROM 旅客,购票 WHERE _(k)_ GROUP BY _(l)_; ORDER BY _(m)_;(2)经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。查询从广州到北京,经过一次中转的所有航班对,输出广州到中转地的航班编号、中转地、中转地到北京的航班编号。 SELECT _(n)_ FROM 航班航班1,航班 航班2 WHERE _(o)_;答案: 本题解析:1、 PRIMARY KEY(或NOT NULL UNIQUE)CHECK(购票金

6、额0)FOREIGN KEY (身份证号) REFERENCES 旅客(身份证号)FOREIGN KEY (航班编号) REFERENCES 航班(航班编号)在创建购票关系模式的SQL语句时,由于属性购票单号为购票关系模式的主键,即不能为空且唯一标识一条数据记录,因此空缺处需要填入PRIMARY KEY(或NOT NULL UNIQUE,或NOT NULL PRIMARY KEY)对该属性进行主键约束。结合题干给出的关键信息购票金额大于零可知,空缺处应填入CHECK(购票金额0)对属性购票金额进行约束。由于属性身份证号、航班编号是购票关系模式的外键,因此空缺处需要使用FOREIGN KEY对这

7、两个属性进行外键约束,即应填入FOREIGN KEY(身份证号)REFERENCES旅客(身份证号)、FOREIGN KEY(航班编号)REFERENCES航班(航班编号)。2、 票价*折扣*VIP折扣航班.航班编号=折扣.航班编号INSERT购票VIP折扣=vip_value(nrow.身份证号)旅客.身份证号=nrow.身份证号(1)基于题干给出的关键信息旅客购买机票的购票金额计算公式为:票价折扣VIP折扣可知,(空缺处对应填入INSERT INTO语句中购票金额的计算公式,即票价*折扣*VIP折扣。结合题干给出的其中旅客的VIP折扣与该旅客已购买过的机票的购票金额总和相关,在旅客每次购票

8、后被修改等关键信息可知,该SELECT查询语句中将涉及到航班、折扣两个关系模式,因此空缺处应对这二者进行关联,即应填入航班.航班编号=折扣.航班编号。(2)使用T-SQL语句来创建触发器的基本语句如下。create trigger trigger_name on table_name | view_name for | After | Instead ofinsert,update,delete as sql_statement在购票关系模式中插入一条数据记录时,触发器应能够自动执行,因此需要创建基于INSERT类型的触发器,即空缺处应依次填入INSERT、购票。根据题干给出的VIP折扣值的计

9、算由函数float vip_value(char18身份证号)完成等关键信息可知,空缺处应填入的触发器执行动作是VIP折扣=vip_value(nrow.身份证号)。空缺处应添加表的连接条件-旅客.身份证号=nrow.身份证号。3、旅客.身份证号=购票.身份证号 AND搭乘日期 BETWEEN 2012/1/1 AND 2012/12/31旅客.身份证号,姓名 HAVING SUM(购票金额)=10000SUM(购票金额) DESC航班1.航班编号,航班1.目的地,航班2.航班编号航班1.起飞地=广州 AND 航班2.目的地=北京 AND航班1.目的地=航班2.起飞地;(1)(1)查询搭乘日期

10、在2012年1月1日至2012年12月31日之间,且合计购票金额大于等于10000元的所有旅客的身份证号、姓名和购票金额总和,并按购票金额总和降序输出。SELECT 旅客.身份证号,姓名,SUM(购票金额)FROM 旅客,购票WHERE 旅客.身份证号=购票.身份证号 AND搭乘日期 BETWEEN 2012/1/1 AND 2012/12/31GROUP BY 旅客.身份证号,姓名 HAVING SUM(购票金额)=10000;ORDER BY SUM(购票金额) DESC;(2)经过中转的航班与相同始发地和目的地的直达航班相比,会享受更低的折扣。查询从广州到北京,经过一次中转的所有航班对,

11、输出广州到中转地的航班编号、中转地、中转地到北京的航班编号。SELECT 航班1.航班编号,航班1.目的地,航班2.航班编号FROM 航班航班1,航班航班2WHERE 航班1.起飞地=广州 AND 航班2.目的地=北京 AND航班1.目的地=航班2.起飞地;2. 问答题:某健身俱乐部要开发一个信息管理系统,该信息系统的部分关系模式如下:员工(员工身份证号,姓名,工种,电话,住址)会员(会员手机号,姓名,折扣)项目(项目名称,项目经理,价格)预约单(会员手机号,预约日期,项目名称,使用时长)(外键:会员手机号)消费(流水号,会员手机号,项目名称,消费金额,消费日期)(外键:会员手机号,项目名称)

12、有关关系模式的属性及相关说明如下:1)俱乐部有多种健身项目,不同的项目每小时的价格不同。俱乐部实行会员制,且需要电话或在线提前预约。2)每个项目都有一个项目经理,一个经理只能负责一个项目。3)俱乐部对会员进行积分,达到一定积分可以进行升级,不同的等级具有不同的折扣。【问题1】请将下面创建消费关系的SQL语句的空缺部分补充完整,要求指定关系的主码、外码,以及消费金额大于零的约束。CREATE TABLE 消费(流水号 CHAR(12) (a) ,会员手机号CHAR(11),项目名称CHAR (8),消费金额NUMBER ( b ) ,消费日期DATE,( c ),( d ),);【问题2】(1)

13、手机号为18812345678的客户预约了2014年3月18日两个小时的羽毛球场地,消费流水号由系统自动生成。请将下面SQL语句的空缺部分补充完整。INSERT INTO消费(流水号,会员手机号,项目名称,消费金额,消费日期)SELECT 201403180001,18812345678,羽毛球, ( e ) ,2014/3/18FROM会员,项目,预约单WHERE 预约单.项目名称=项目.项目名称AND ( f )AND 项目.项目名称=羽毛球AND 会员.会员手机号=18812345678;(2)需要用触发器来实现会员等级折扣的自动维护,函数float vip_value(char(11)

14、 会员手机号)依据输入的手机号计算会员的折扣。请将下面SQL语句的空缺部分补充完整。CREATETRIGGERVIP_TRG AFTER ( g ) 0N ( h )REFERENCINGnew row AS nrowFOR EACH ROWBEGINUPDATE 会员SET ( I )WHERE ( j ) ;END【问题3】请将下面SQL语句的空缺部分补充完整。(1)俱乐部年底对各种项目进行绩效考核,需要统计出所负责项目的消费总金额大于等于十万元的项目和项目经理,并按消费金额总和降序输出。SELECT 项目.项目名称,项目经理,SUM(消费金额)FROM 项目,消费WHERE ( k )G

15、ROUP BY ( l )ORDER BY ( m ) ;(2)查询所有手机号码以888结尾,姓王的员工姓名和电话。SELECT 姓名,电话FROM员工WHERE姓名 ( n ) AND 电话 ( o )答案: 本题解析:【问题1】(a)PRIMARY KEY (或NOT NULL UNIQUE)(b)CHECK(消费金额0)(c)FOREIGN KEY(会员手机号)REFERENCES 会员(会员手机号)(d)FOREIGN KEY(项目名称)REFERENCES 项目(项目名称)【分析】本题考査SQL的应用,属于比较传统的题目,考查点也与往年类似。本问题考查数据定义语言DDL和完整性约束。

16、根据题意,需要对消费表的流水号加主键(或非空)约束,考查实体完整性约束,对应的语法为:PRIMARY KEY (或 NOT NULL UNIQUE )消费金额需要大于0,所以需要加Check约束,对应的语法为:CHECK (消费金额0)会员手机号是会员关系的主键,是消费关系的外键,考查参照完整性约束,需要增加外键约束,对应的语法为:FOREIGN KEY (会员手机号)REFERENCES 会员(会员手机号)项目名称是项目关系的主键,是消费关系的外键,考查参照完整性约束,需要增加外键约束,对应的语法为:FOREIGN KEY (项目名称)REFERENCES 项目(项目名称)【问题2】(1)(

17、e) 价格*使用时长*折扣 (f) 预约单.会员手机号=会员.会员手机号(2)(g) INSERT (h)消费(i)折扣=vip_value(nrow.会员手机号) (j)会员.会员手机号=nrow.会员手机号【分析】本问题考查数据操纵语言DML。(1)本题考查一个较完整的查询语句,需要向消费关系插入新元组。SELECT子句缺少消费金额。消费金额=价格*使用时长*折扣。WHERE子句缺少预约单关系和会员关系按照会员手机号的连接,因此应该增加预约单.会员手机号=会员.会员手机号。(2)本题考查触发器,触发器是一个能由系统自动执行对数据库修改的语句。一个触发器由事件、条件和动态三部分组成:事件是指

18、触发器将测试条件是否成立,若成立 就执行相应的动作,否则就什么也不做;动态是指若触发器测试满足预定的条件,那么就由数据库管理系统执行这些动作。本题首先定义触发器的事件,用触发器来实现会员等级折扣的自动维护。(g)和(h)缺少向消费关系插入的语句,因此应该分别补充NSERT和 消费。(i)语句调用vip_value函数实现会员折扣的更新,函数参数为会员手机号,因此应该补充折扣=vip_value(nrow.会员手机号)。(j)语句实现会员关系和nrow关系按照会员手机号的连接,因此应该补充会员.会员手机号=nr0w.会员手机号。【问题3】(1)(k)项目.项目名称=消费.项目名称 (i)项目.项

19、目名称,项目经理 HAVING SUM(消费金额)= 100000 (m) SUM(消费金额)DESC(2)(n) LIKE王% (o) LIKE %888【分析】本问题考査数据操纵语言DML。(1)本题考查一个较完整的查询语句,知识点包括夺标查询、集函数、查询分组、分组条件和排序查询结果。査询涉及项目和消费关系模式。用集函数SUM(消 费金额)求消费总金额,若有GROUP BY子句,则集函数作用在每个分组上,且GROUP BY之后应包含除了集函数之外的所有结果列。若GROUP BY之后跟有HAVING子句,则只有满足条件的分组才会输出。RDER BY列名ASC|DESC对输出结果进行升序或降

20、序的排列,若不明确制定法升序或降序,则默认升序排列。(2)本题考查用关键字LIKE进行字符匹配。LIKE的语法为:NOT LIKE 匹配串其中,匹配串可以是一个完整的字符串,也可以含有通配符和_,其中代表任意长度(包括0长度)的字符串,_代表单个字符。手机号码以888结尾,姓王的 员工对用的表示为:姓名LIKE王AND电话LIKE888。3. 问答题:某连锁酒店提供网上预订房间业务,流程如下:(1)客户查询指定日期内所有类别的空余房间数,系统显示空房表(日期,房间类别,数量)中的信息;(2)客户输入预订的起始日期和结束日期、房间类别和数量,并提交;(3)系统将用户提交的信息写入预订表(身份证号

21、,起始日期,结束日期,房间类别,数量),并修改空房表的相关数据。针对上述业务流程,回答下列问題。【问题1】(3分)如果两个用户同时查询相同日期和房间类别的空房数量,得到的空房数量为1,并且这两个用户又同时要求预订,可能会产生什么结果,请用100字以内文字简要叙述。【问题2】(8分)引入如下伪指令:将预订过程作为一个事务,将查询和修改空房表的操作分别记为R(A)和W(A,x),插入预订表的操作记为W(B,a),其中x代表空余房间数,a代表预订房间数。则事务的伪指令序列为:x = R(A),W(A,x-a),W(B,a)。在并发操作的情况下,若客户1、客户2同时预订相同类别的房间时,可能出现的执行

22、序列为:x1=R(A), x2 = R(A), W(A, x1-a1), W(B1,a1), W(A, x2-a2), W(B2,a2)。(1)此时会出现什么问题,请用100字以内文字简要叙述。(2)为了解决上述问题,引入共享锁指令SLock(X)和独占锁指令XLock(X)对数据 X进行加锁,解锁指令Unlock(X)对数据X进行解锁,请补充上述执行序列,使其满足 2PL协议,使其不产生死锁且持有锁的时间最短。【问题3】(4分)下面是实现预订业务的程序,请补全空玦处的代码。其中主变量:Cid,:Bdate, :Edate,:Rtype, :Num 分别代表身份证号,起始日期,结束日期,房间类

23、别和订房数量。SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;UPDATE 空房表SET数量=数量 - :NumWHERE_(a)_;if error then ROLLBACK; return -1;INSERT INTO 预订表 VALUES (:Cid, :Bdate,:Edate,:Rtype,:Num);if error then ROLLBACK; return -2 ; _(b)_; .答案: 本题解析:【问题1】(3分)同时预订时,可能会产生一个客户订不到或者把同一房订给两个客户【问题2】(8分)出现问题:丢失修改,客户1预订a1

24、数量房间后,对空房数量的修改被T2的修改覆盖,造成数据不一致。(4分)XLOCK(A),x1=R(A),W(A,x1-a1),XLOCK(B),UNLOCK(A),W(B1,a1),UNLOCK(B), XLOCK(A), x2=R(A),W(A,x2-a2),XLOCK(B),UNLOCK(A),W(B2,a2),UNLOCK(B)(4分)【问题3】(4分)(a)房间类别=:Rtype AND 日期 BETWEEN :Bdate AND :Edate(2分)(b)COMMIT;Return 0;(2分)4. 多选题:商业秘密构成的条件是:商业秘密必须具有(请作答此空),即不为公众所知悉;必须

25、具有(),即能为权利人带来经济效益;必须具有() ,即采取了保密措施。A.公开性B.确定性C.未公开性D.非确定性答案:C 本题解析:本题考查知识产权相关知识商业秘密是指不为公众所知悉的、能为权利人带来经济利益、具有实用性并经权利人采取保密措施的技术信息和经营信息。商业秘密分类经营秘密:指未公开的经营信息。技术秘密:指未公开的技术信息。5. 问答题:阅读下列说明,回答问题1至问题3;将解答填入答题纸的对应栏内。【说明】某社会救助基金会每年都会举办多项社会公益救助活动,需要建立信息系统,对之进行有效管理。【需求分析】1.任何一个实名认证的个人或者公益机构都可以发起一项公益救助活动,基金会需要记录

26、发起者的信息。如果发起者是个人,需要记录姓名、身份证号和一部电话号码;如果发起者是公益机构,需要记录机构名称、统一社会信用代码、一部电话号码、唯一的法人代表身份证号和法人代表姓名。一个自然人可以是多个机构的法人代表。2.公益救助活动需要提供详实的资料供基金会审核,包括被捐助人姓名、身份证号、一部电话号码、家庭住址。3.基金会审核并确认项目后,发起公益救助的个人或机构可以公开宣传井募捐,募捐得到的款项进入基金会账户。4.发起公益救助的个人或机构开展救助行动,基金会根据被捐助人所提供的医疗发票或其它信息,直接将所筹款项支付给被捐助者。5.救助发起者针对任一被捐助者的公益活动只能开展一次。【逻辑结构

27、设计】根据上述需求,设计出如下关系模式:公益活动(发起者编号,被捐助者身份证号,发起者电话号码,发起时间,结束时间,募捐金额),其中对于个人发起者,发起者编号为身份证号;对于机构发起者,发起者编号为统一社会信用代码。个人发起者(姓名,身份证号,电话号码)机构发起者(机构名称,统一社会信用代码,电话号码,法人代表身份证号,法人代表姓名)被捐助者(姓名,身份证号,电话号码,家庭住址)【问题1】 对关系机构发起者,请回答以下问题:(1) 列举出所有候选键。(2) 它是否为3NF ,用1100字以内文字简要叙述理由。(3) 将其分解为 BC 范式,分解后的关系名依次为:机构发起者1,机构发起者 2 ,

28、., 并用下划线标示分解后的各关系模式的主键。【问题2】对关系公益摇动 ,请回答以下问题:(1)列举出所有候选键。(2) 它是否为2NF ,用100字以内文字简要叙述理由。(3)将其分解为 BC 范式,分解后的关系名依次为:公益活动1,公益活动 2 ,., 并用下划线标示分解后的各关系模式的主键。【问题3】基金会根据被捐助人提供的医疗发票或其它信息,将所筹款项支付给被捐助者。可以存在分期多次支付的情况,为了统计所筹款项支付情况(详细金额和时间) ,试增加支付记录关系模式,用100字以文字简要叙述解决方案。答案: 本题解析:【问题1】(6 分) (1)统一社会信用代码(2)否,存在传递依赖 :统

29、一社会信用代码法人代表身份证号,法人代表身份证号法人代表姓名(3)机构发起者1(机构名称,统一社会信用代码,电话号码,人代表身份证号)主键:统一社会信用代码机构发起者2(人代表身份证号,法人代表姓名)主键:法人代表身份证号【问题2】(6 分)(1)发起者编号+被捐助者身份证号(2)否:存在部分函数依赖:发起者编号(发起者电话号码)对码(发起者编号,被捐助者身份证号)存在部分函数依赖(3)公益活动1(发起者编号,发起者电话号码)主键:发起者编号公益活动2(发起者编号,被捐助者身份证号,发起时间,结束时间,募捐金额)主键:发起者编号+被捐助者身份证号 【问题3】(3分)支付记录(支付编号,发起者编

30、号,被捐助者身份证号,支付金额,支付时间,被捐助人的相关信息)(被捐助人的相关信息为医疗发票或其他信息),支付编号唯一标识每一次支付6. 问答题:某小区由于建设时间久远,停车位数量无法满足所有业主的需要,为公平起见,每年进行一次抽签来决定车位分配。小区物业拟建立一个信息系统,对停车位的使用和收费进行管理。【需求描述】(1)小区内每套房屋可能有多名业主,一名业主也可能在小区内有多套房屋。业主信息包括业主姓名、身份证号、房号、房屋面积,其中房号不重复。(2)所有车位都有固定的编号,且同一年度所有车位的出租费用相同,但不同年份的出租费用可能不同。(3)所有车位都参与每年的抽签分配。每套房屋每年只能有

31、一次抽签机会。抽中车位的业主需一次性缴纳全年的车位使用费用,且必须指定唯一的汽车使用该车位。(4)小区车辆出入口设有车牌识别系统,可以实时识别进出的汽车车牌号。为方便门卫确认,系统还需登记汽车的品牌和颜色。【逻辑结构设计】根据上述需求,设计出如下关系模式:业主(业主姓名,业主身份证号,房号,房屋面积)车位(车位编号,房号,车牌号,汽车品牌,汽车颜色,使用年份,费用)【问题1】对关系业主,请回答以下词题:(1)给出业主关系的候选键。(2)它是否为2NF,用60字以内文字简要叙述理由。(3)将其分解为BCNF,分解后的关系名依次为:A1,A2,.,并用下划线标示分解后的各关系模式的主键。【问题2】

32、对关系车位,请回答以下问题:(1)给出车位关系的候选键。 (2)它是否为3NF,用60字以内文字简要叙述理由。(3)将其分解为BCNF,分解后的关系名依次为:B1,B2,.,并用下划线标示分解后的各关系模式的主键。【问题3】若临时车辆进入小区,按照进入和离开小区的时间进行收费(每小时2元)。试增加临时停车关系模式,用100字以内文字简要叙述解决方案。答案: 本题解析:【问题1】本题考查数据库理论规范化及应用,属于比较传统的题目,考查点也与往年类似。本问题考査候选键和第二范式。业主关系的候选键为:房号,业主身份证号。分析业主关系的函数依赖可知:房号,业主身份证号业主姓名,业主身份证号,房号,房屋

33、面积根据第二范式的要求:每一个非主属性完全函数依赖于码,而根据业主关系的函数依赖:房号房屋面积可知,存在非主属性对候选键的部分依赖。所以,业主关系模式不满足第二范式。分解后的关系模式为:A1(房号,业主身份证号)A2(房号,房屋面积)A3(业主身份证号,业主姓名)【问题2】本问题考查第三范式。根据第三范式的要求:每一个非主属性既不部分依赖于码也不传递依赖于码。车位关系的候选键为:(车位编号,使用年份),(房号,使用年份)或(车牌号,使用年份)存在非主属性汽车品牌(或汽车颜色)对候选键车位编号,使用年份的传递依赖:(车位编号,使用年份)车牌号,车牌号汽车品牌。故(车位编号,使用年份)汽车品牌,为

34、传递依赖。所以,车位关系模式不满足第三范式。分解后的关系模式为:B1(使用年份,费用)B2(车牌号,汽车品牌,汽车颜色)B3(车位编号,使用年份,房号,车牌号)或B3(车位编号,使用年份,房号,车牌号)或B3(车位编号,使用年份,车牌号,房号)【问题3】本问题考查增加新的关系。因为需要根据进入和离开小区的时间进行收费,所以在增加的临时停车关系模式中只需要体现车牌号、进入时间和离开时间即可,即增加的关系模式为:临时停车(车牌号,进入时间,离开时间)。需要注意的是:这三个属性是必须有的,也可以出现其他属性。7. 问答题:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】 某高速

35、路不停车收费系统(ETC)的业务描述如下:(1)车辆驶入高速路入口站点时,将驶入信息(ETC卡号,入口编号,驶入时间) 写入登记表;(2)车辆驶出高速路出口站点(收费口)时,将驶出信息(ETC卡号,出口编号, 驶出时间)写入登记表;根据入口编号、出口编号及相关收费标准,清算应缴费用,并从绑定的信用卡中扣除费用。 一张ETC卡号只能绑定一张信用卡号,针对企业用户,一张信用卡号可以绑定多 个ETC卡号。使用表绑定(ETC卡号,信用卡号)来描述绑定关系,从信用卡(信用卡号,余额)表中扣除费用。 针对上述业务描述,完成下列问题: 【问题1】在不修改登记表的表结构和保留该表历史信息的前提下,当车辆驶入时

36、,如何保 证当前ETC卡已经清算过,而在驶出时又如何保证该卡已驶入而未驶出?请用100 字以内文字简述处理方案。【问题2】 当车辆驶出收费口时,从绑定信用卡余额中扣除费用的伪指令如下:读取信用卡余额到变量X,记为x = R(A);扣除费用指令x = x - a;写信用卡余额指令记为W(A, x)。 (1)当两个绑定到同一信用卡号的车辆同时经过收费口时,可能的指令执行序列为:x1=R(A),x1 =x1-a1, x2 = R(A), x2 = x2-a2, W(A,x1,W(A,x2)。此时会出现什么问题?(100字以内) (2)为了解决上述问题,引入独占锁指令XLock(A)对数据A进行加锁,

37、解锁指令Unlock(A)对数据A进行解锁。请补充上述执行序列,使其满足2PL协议。【问题3】下面是用E-SQL实现的费用扣除业务程序的一部分,请补全空缺处的代码。CREATE PROCEDURE 扣除(IN ETC 卡号 VARCHAR(20),IN 费用 FLOAT)BEGINUPDATE 信用卡 SET 余额=余额-费用FROM信用卡,绑定WHERE信用卡.信用卡号=绑定.信用卡号 AND ( a ) ;if error then ROLLBACK;else ( b ) ;END答案: 本题解析:【问题1】在车辆驶入时判定登记表上对应该ECT卡的所有记录,出口编号和驶出时间均不为空,表示

38、该卡已清算过;在车辆驶出时判定该卡存在记录有驶入信息而出口编号和驶出时间为空。【问题2】(1)出现问题:丢失修改,x1的费用扣除后写入的值被x2的覆盖,造成对x1并未扣费。(2)加锁后的执行序列:XLock(A), x1=R(A), x1=x1-a1, W(A,x1), Unlock(A), XLock(A), x2 = R(A), x2 = x2-a2, W(A,x2), Unlock(A)。【问题3】(a) ETC卡号=:ETC卡号(c)COMMIT【解析】【问题1】【试题分析】本题考査事务概念及应用,属于比较传统的题目,考查点也与往年类似。本问题考查应用需求。一次通过包含经过入口站点和经

39、过出口站点,由于ETC卡存在反复使用,所以应将经过入口和出口严格配对。根据历史记录,进入站点时应该没有 未配对的入口信息,即所有的经过信息均有配对的入口和出口记录;出口时仅有唯一的入口信息。 .解决这些问题的最好办法是把入口和出口信息作为一条记录,用来记录每一次经过。经过入口站点时插入新记录,出口信息字段为空值,经过出口站点时再修改为相应的值。【问题3】【试题分析】本问题考查并发控制。两辆车同时经过收费口,会对信用卡的同一余额数据进行操作,可能会造成数据的不一致。根据给定的指令执行序列x1= R(A),x1= x1- a1,x2 = R(A), x2 = x2-a2, W(A,x1), W(A

40、,x2),W(A,x1)指令对数据对象A 写入的x1值会被随后的x2值所指盖,造成丢失修改的错误。解决的办法是引入锁机制,在修改数据前加独占锁,写入数据后再释放锁,符合两段锁协议的规定,则会避免产生数据不一致性问题。【问题3】【试题分析】本问题考查存储过程及事务程序的实现。修改语句中条件部分的空缺为输入参数中的ETC卡号,判定语句中的空缺为事务的提交指令。8. 问答题:某汽车租赁公司建立汽车租赁管理系统,其数据库的部分关系模式如下:用户:USERS( UserId,Name, Balance),各属性分别表示用户编号、姓名、余额;汽车:CARS(CId, Ctype, CPrice,CStat

41、us)各属性分别表示汽车编号、型号、价格(日租金)、状态;租用记录: BORROWS(BRId, UserId,CId, STime, ETime),各属性分别表示租用编号、用户编号、汽车编号、租用用时间、归还时间;不良记录:BADS(BId, UserIdBRId, BTime),各属性分别表示不良记录编号、用户编号、租用编号、不良记录时间。相关关系模式的属性及说明如下(1)用户租用汽车时,其用用户表中的余额不能小于 500,否则不能租用。(2)汽车状态为待租和已租,待租汽车可以被用户租用,已租汽车不能租用。(3)用户每租用一次汽车,向租用记录中添加一条租用记录,租用时间默认为系统当前时间,

42、归还时间为空值,并将所租汽车状态变为已租。用户还车时,修改归还时间为系统当前时间,并将该汽车状态改为待租。要求用户不能同时租用两辆及以上汽车。(4)租金从租用时间起按日自动扣除。根据以上描述,回答下列问题题,将 SQL 语句的空缺部分补充完整。【问题1】(1)请将下面建立 租用记录 表的 SQL 语句补充完整,要求定义主码完整性约束和引用完整性约束。CREATE TABLE BORROWS (BRIDCHAR(20)(a),UserId CHAR(10)(b) ,Cld CHAR(10)(c), STime DATETIME(d),ETime DATETIME,);【问题2】当归还时间为空值时

43、,表示用户还未还车,系统每天调用事务程序从用户余额中自动扣除当日租金,每个事务修改一条用户记录中的余额值。由用户表上的触发器实现业务:如用户当日余额不足,不扣除当日租金,自动向不良记录表中加入一条记录,记录中的 BId 取值由 UserId系统当前日期构成, Btime 采用 GETDATE()函数取系统当前时间。补全创建触发器 Bad_TRG 的 SQL 语句。CREATE TRIGGER Bad_TRG(e)UPDATEof Balance ON USERSReferencing new row as nrowFor each rowWhen nrow.Balanceimage.png0B

44、EGIN(f);/插入不良记录INSERT INTO BADSSELECT CONCAT(BORROWs.UserId, CONVERT(varchar(100), GETDATE(), 10), BORROWS UserId,BRID, (g)/ CONVERTO 函数将日期型数据改为字符串型,CONCATO 函数实现字符串拼接FROM BORROWSWHERE(h)AND ETime IS NULL;END;【问题3】不良记录是按日记录的,因此用户一次租车可能会产生多条不良记录。创建不良记录单视图 BADS_Detail,统计每次租车产生的不良记录租金费用总和大于 200 的记录,属性有U

45、serId、Name、BRId、CId、Stime、Etime 和 total(表示未缴纳租金总和)。补全建视图 BADS Detail 的 SQL 语句。CREATE VIEW(i)ASSELECTBADS. UserId, USERS. Name, BADS.BRId, CARS. Cld, Stime, Etime, (j)AS totalFROM BORROWS,BADS,CARS,USERSWHERE BORROWS.BRId=BADS. BRId AND BORROWS.Cid=CARS. CldAND(k) =BADS.UserIdGROUP BY BADS. UserId, U

46、SERS.Name, BADS.BRID, CARS. CId, Stime, EtimeHAVING(l) ;【问题4】查询租用了型号为“A8”且不良记录次数大于等于 2 的用户,输出用户编号、姓名,并按用户姓名降序排序输出。SELECT USERS.UserId, NameFROM USERS,BORROWS, CARSWHERE USERS. UserId= BORROWS.UserId AND BORROWS.Cid= CARS.CIdAND (m)AND EXISTS(SELECT * FROM BADSWHERE BADS.UserId=BORROWS.UserId AND(n)G

47、ROUP BY UserIdHAVING COUNT(*)= 2)ORDER BY(0) 。答案: 本题解析:【问题1】(a)PRIMARY KEY(b)REFERENCES UERS(UserID)(c)REFERENCES CARS(Cid)(d)GETDATE()【问题2】(e)After(f)Rollback(g)GETDATE()(h)UserID=nrow.UserID【问题3】(i)BADS_Detail(j)COUNT(*)*Cprice(k)USERS. UserId(l)COUNT(*)*Cprice200【问题4】(m)CARS.Ctype=A8(n)BADS.BRId=

48、BORROWS.BRId(o)Name DESC9. 判断题:某高校五个系的学生信息存放在同个基本表中,采取_( )_的措施可使各系的管理员只能读取本系学生的信息。A.建立各系的列级视图,并将对该视图的读权限赋予该系的管理员B.建立各系的行级视图,并将对该视图的读权限赋予该系的管理员C.将学生信息表的部分列的读权限赋予各系的管理员D.将修改学生信息表的权限赋予各系的管理员答案:B 本题解析:暂无解析10. 问答题:某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:Red(ID

49、,BatchID,SenderID,Money,ReceiverID)其中 ID 唯一标识每一个红包; BatchID 为发红包的批次,一个 BatchID 值可以对应多个 ID 值;SenderID 为发红包人的标识;Money 为红包中的钱数; ReceiverID 记录抢到红包的人的标识。发红包人一次抛出多个红包,即向红包表中插入多条记录,每条记录表示一个红包, 其 ReceiverID 值为空值。抢某个红包时,需要判定该红包记录的 ReceiverID 值是否为空,不为空时表示该红包已被抢走,不能再抢,为空时抢红包人将自己的标识写入到 ReceiverID 字段中,即为抢到红包。【问题

50、 1】 (9分)引入两个伪指令 a = R(X) 和 W(b,X) 。其中a = R(X) 表示读取当前红包记录的 ReceiverID 字段(记为数据项 X) 到变量 a 中, W(b,X)表示将抢红包人的唯一标识 b 的值写入到当前红包记录的 ReceiverID 字段(数据项 X) 中,变量 a 为空值时才会执行 W(b,X) 操作。假设有多个人同时抢同一红包(即同时对同一记录进行操作),用ai=Ri(X)和Wi(bi,X)表示系统依次响应的第i个人的抢红包操作。假设当前数据项 X 为空值,同时有三个人抢同一红包,则(1)如下的调度执行序列:a1=R1,a2=R2(X),W1(b1,X)

51、,W2(b2,X),a3=R3(X)抢到红包的是第几人?并说明理由。(2)引入共享锁指令 SLocki(X)、独占锁指令XLocki(X)和解锁指令 ULocki(X),其中下标 i表示第 i个抢红包人的指令。如下的调度执行序列:SLock1(X),a1=R1(X),SLock2(X),a2=R2(X),XLock1(X).是否会产生死锁?并说明理由。 (3)为了保证系统第一个响应的抢红包人为最终抢到红包的人,请使用上述。中引入的锁指令,对上述(1)中的调度执行序列进行修改,在满足 2PL协议的前提下,给 出一个不产生死锁的完整的调度执行序列。【问题 2】 (6分)下面是用 SQL实现的抢红包

52、程序的一部分,请补全空缺处的代码CREATE PROCEDURE ScrambleRed (IN BatchNo VARCHAR(20) , -红包批号 (IN RecvrNo VARCHAR(20) -接收红包者 BEGIN -是否已抢过此批红包 if exists( SELECT * FROM Red WHERE BatchID = BatchNo AND ReceiverID = RecvrNo) thm return -1; end if; -读取此批派发红包中未领取的红包记录ID DECLARE NonRecvedNo VARCHAR(30); DECLARE NonRecvedNo

53、 CURSOR FOR SELECT IDFROM RedWHERE BatchID = BatchNo AND ReceiverID IS NULL; -打开游标 OPEN NonRecvedRed; FETCH NonRecvedRed INTO NonRecvedNo; while not error 抢红包事务 BEGIN TRANSACTION; /写入红包记录 UPDATE RED SET ReceiverID =RecvrNo WHERE ID = nonRECVED AND (a) /执行状态判定 If修改的记录数= 1 THEN COMMIT; (b); Return 1;

54、Else ROLLBACK; End if; (c); End while -关闭游标 CLOSE NonRecved RD Return 0; END答案: 本题解析:【问题1】(9分)(1)第2人,并发操作出现了丢失更新的问题,第2个的更新覆盖了第1个的更新,原因是破坏了事物的隔离性。(2)会产生死锁,由于数据X同时被1和2加锁了S锁,在对方没有释放的时候,都无法加成功X锁,导致1和2一直都处于等待的状态。(3)XLock(X) a=R(X) W(b,X)UNLock(X)【问题2】(6分)(a)ReceiverID is NULL(b)CLOSE NonRecvedRed(c)FETCH NonRecvedRed INTO NonRecvedNo

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!