2018年软考上半年数据库系统工程师考试真题(下午题) 下载本文

内容发布更新时间 : 2024/6/8 22:05:13星期一 下面是文章的全部内容请认真阅读。

...

软考数据库系统工程师

STime DATETIME ETime DATETIME , );

【问题 2】(4 分)

(d) ,

当归还时间为空值时,表示用户还未还车,系统每天调用事务程序从用户余额中自动扣除当日租金,每个事务 修改一条用户记录中的余额值。由用户表上的触发器实现业务:如用户当日余额不足,不扣除当日租金,自动向不 良记录表中加入一条记录,记录中的 前时间。补全创建触发器

CREATE TRIGGER Bad_TRG Referencing new row as nrow For each row

When nrow.Balance<0 BEGIN

(f )

//

插入不良记录

INSERT INTO BADS

SELECT CONCAT (BORROWS.UserID,CONVE(RTvarchar(100) ,GETDAT(E ),10)),BORROW,SUserID ,

BRID,

(g)

//CONVERT //CONCAT FROM BORROWS WHERE END

【问题 3】(4 分)

不良记录是按日记录的,因此用户一次租车可能会产生多条不良记录。创建不良记录单视图 计每次租车产生的不良记录租金费用总和大于

CREATE VIEW

(i )

AS

(j ) AS total

(表示未缴纳租金总和) 。补全建视图 BADS_Detail 的 SQL语句。

SELECT BADS.UserID ,USERS.Nam,e BADS.BRID,CARS.CID,STime,ETime, FROM BORROWS BADS.CAR,S USERS

WHERE BORROWS.BRID=BADS.BRID AND BORROWS.CID=CARS.CID AND HAVING

【问题 4】(3 分)

查询租用了型号为“ A8”且不良记录次数大于等于 SELECT USER,S UserID ,Name FROM USER,SBORROW,SCARS

WHERE USERS.UserID=BORROWS.UserID AND BORROWS.CID=CARS.CID AND (m)

SELECT * FROM BADS

WHERE BADS.UserID=BORROWS.UserID AND GROUP BY UserID

HAVING COUNT

ORDER BY

(o)

;

(*)>=2)

(n)

AND EXISTS (

2 的用户,输出用户编号、姓名,并按用户姓名降序输出。

(l )

(k) =BADS.UserID

GROUP BY BADS.UserID,USERS.Name ,BADS.BRID,CARS.CID,STime,ETime

BADS_Detail ,统

200 的记录, 属性有 UserID 、Name、BRID、CID、STime、ETime 和 total

(h)

AND ETime IS NULL

()函数将日期型数据改为字符串型 ()函数实现字符串拼接

BID 取值由 UserID+ 系统当前日期构成, BTime 采用 GETDAT(E)函数取系统当 (e)

UPDATE OF Balance ON USERS

Bad_TRG的 SQL语句。

2018年上半年(上午) - 6 / 9

...

...

软考数据库系统工程师

试题五 (共 15 分)

阅读下列说明和图,回答问题 【说明】

某超市销售系统的部分关系模式如下

商品表: Commodity(Ccode,Cname,price ,qty ),其中属性含义分别为:商品编号、商品名称、价格、库存 量,有专门的事务保证库存量足够大,销售时无需检测。

销售表: Sale (Sno,Ccode,amount,Stime ),其中属性含义分别为:销售编号,商品编号、数量、时间。 其销售业务规则如下:顾客在超市挑选好商品后,带商品到结算处结算付款,结算处有多名结算员使用多台机 器进行结算。结算员负责扫顾客购买商品的条码和数量,由系统后台结算程序计算出顾客购买商品的总金额,修改 商品表的商品库存量,并将销售信息写入销售表。

请根据上述描述,回答以下问题。 【问题 1】(3 分)

假设有两个顾客同时购买同一条码的商品, 所示。

结算事务修改该商品的库存量 (记为数据项 X)部分的调度如图 5-1

1 至问题 3,将解答填入答题纸的对应栏内。

如果购买前 X 的初值为 10,则上述调度执行完成后, X 的值是多少?属于哪一类不一致性? 【问题 2】(6 分)

引入独占锁指令 Clock ()和解锁指令 Unlock (),对【问题 1】中的调度进行重写,要满足两段锁协议,且事 务 T1、T2 首条指令的相关请求时间与【问题 【问题 3】(6 分)

CREATE PROCEDURE b(uyIN:CommNo VARCH(AR20),IN:AmountBuy INT ) BEGIN If

(:AmountBuy<1) return-1

(a)

2018年上半年(上午) - 7 / 9

...

1】中的相同。

SET TRANSACTION ISOL ATION LEVEL

...

软考数据库系统工程师

BEGIN TRANSACTION ; // 插入销售记录

INSERT INTO Sale VALUES

(getGUID(),:CommN,o AmountBuy,getDATETIME( ));

// 函数 getGUID():获取唯一值

// 函数 getDATETIME():获取当前系统日期时间

if error //error

是由 DBMS提供的上一句 SQL的执行状态

BEGIN ROOLLBACK ; return-2

END

UPDATE Commodity SET qty= (b)

WHERE Ccode= :CommN;o

if error BEGIN ROLLBACK ; return-3 ;

END

(c)

END

2018年上半年(上午)...

- 8 / 9

...

软考数据库系统工程师

...

2018年上半年(上午)- 9 / 9