用看的、听的学真题

study by eyes and ears.

  1. 首页
  2. 数据库系统工程师
  3. 2020年11月数据库系统工程师考试下午真题【应用技术】
  4. 真题详解

2020年11月数据库系统工程师考试下午真题【应用技术】(第4题) 收藏

【4】

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

  某网上销售系统的部分关系模式如下:

  订单表:orders(o_no,o_date,o_time,p_no,m_no,p_price,nums,amt,status),其中属性含义分别为:订单号、订单日期、订单时间、产品编码、供应商编码、产品价格、产品数量、订单金额、订单状态(0-未处理,1-已处理,2-已取消)

  产品表:products(p_no,p_name,p_type,price,m_no,p_nums),其中属性含义分别为:产品编码、产品名称、产品类型、产品价格、供应商编码、库存数量。

问题1 (5.0分)

  节假日时,由供应商提供商品打折后的新价格、数据存放在临时表中,该临时表的表名为tmp_prices(不同供应商有不同的临时表),其关系模式如下:

  tmp_prices(p_no,t_price,m_no);

  后台维护人员需要根据供应商填写在tmp_prices中的数据来更新产品表中某些产品的价格。下面是基于游标,用SQL实现的价格更新程序,请补全空缺处的代码。

  CREATE PROCEDURE UpdatePrice()

  DECLARE

  Pno VARCHAR(10);

  Pprice real(6,2);

  Mno VARCHAR(10);

(a) upPrice IS

  SELECT p_no,t_price,m_no FROM tmp_prices;

  BEGIN

(b) upPrice;

  LOOP

   FETCH upPrice INTO (c)

   IF NOTFOUND DO BREAK // FETCH操作无数据

   UPDATE products SET price=Pprice WHERE p_no=Pno and m_no=Mno;

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

   BEGIN

   ROLLBACK;

   RETURN -1;

   END

  END LOOP

  CLOSE upPrice;

(d)

  END;

暂无

问题2 (6.0分)

  假设用户1和用户2同时购买1份A商品,用户3查询和浏览A商品。三个用户对应事务的部分调度序列如表4-1所示(事务中未进行并发控制),其中T0时刻该A商品的库存数量p_nums为100。

  请说明T4、T7时刻,用户3事务读取到的p_nums数值分别是多少。请说明T8时刻事务调度结果是否正确?若不正确请说明属于哪一种数据不一致性。

暂无

问题3 (4.0分)

  为保证并发事务的正确性,系统要求所有事务需遵循两段锁协议。

  (1)请简要解释两段锁协议,并说明“两段”的含义。

  (2)请说明两段锁协议是否可以避免死锁?如不能避免,应采取什么措施解决死锁问题。

暂无
广告位