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

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

试题【4】(15分)

  阅读下列说明,回答问题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)请说明两段锁协议是否可以避免死锁?如不能避免,应采取什么措施解决死锁问题。
暂无
广告位
试题标签
难度评价
  • 容易 0%
  • 中等 0%
  • 偏难 0%