...
软考数据库系统工程师
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