软考真题
第55题

试题四

【说明】

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

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

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

【问题1】(5分)


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

tmp_prices(p_no,t_price,m_no);

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

CREATE PROCEDURE UpdatePrice() 

    DECLARE

        Pno        VARCHAR(lO);

        Pprice real(6,2); 

        Mno VARCHAR(lO);

        ( a )                 upPrice IS

        SELECT p_no, t_price, m_no FROM tmp_prices;

BEGIN

     ( b )                   upPrice; 

    LOOP

        FETCH upPrice INTO

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

        

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

        If error                    / / error 是由 DBM S 提供的上一句 SQL 的执行状态

        BEGIN

            ROLLBACK;

            RETURN -1;

    END END LOOP

    CLOSE upPrice;

                         ( d )              ;    

END;


【问题 2】

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

 

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


【问题 3】( 4 分)

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

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

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


第7章关系数据库
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2020年 下半年 下午试卷 案例

笔记