某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票。开发小组经过设计

免费题库2022-08-02  28

问题 某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票。开发小组经过设计,给出该系统的部分关系模式如下:航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价)代理商(代理商编号,代理商名称,客服电话,地址,负责人)机票代理(代理商编号,航班编号,票价)旅客(身份证号,姓名,性别,出生日期,电话)购票(购票单号,身份证号,航班编号,搭乘日期,购票金额)在提供给用户的界面上,其核心功能是当用户查询某航班时,将该航班所有的代理商信息及其优惠票价信息,返回给用户,方便用户购买价格优惠的机票。在实现过程中发现,要实现此功能,需要在代理商和机票代理两个关系模式上进行连接操作,性能很差。为此开发小组将机票代理关系模式进行了扩充,结果为:机票代理(代理商编号,航班编号,代理商名称,客服电话,票价)这样,用户在查找信息时只需对机票代理关系模式进行查询即可,提高了查询效率。【问题1】(6分)机票代理关系模式的修改,满足了用户对代理商机票价格查询的需求,提高了查询 效率。但这种修改导致机票代理关系模式不满足3NF,会带来存储异常的问题。1)请具体说明其问题,并举例说明。2)这种存储异常会造成数据不一致,请给出解决该存储异常的方案。【问题2】(9分)在机票销售信息处理系统中,两个代理商的售票并发执行,可能产生的操作序列如表4-1所示。表4-1  两个代理商可能的操作序列假设两个代理商执行之前,该航班仅剩1张机票。1)请说明上述两个代理商操作的结果。2)并发操作会带来数据不一致的问题,请具体说明3种问题。【问题3】(10分)为了避免问题2中的问题,开发组使用库的读写锁机制,操作序列变为表4-2所示。表4-2  加入读写锁机制后,两个代理商可能的操作序列请填写表中的空白项,并用150字以内的文字说明读写锁机制的缺点。

选项

答案

解析 【问题1】
1)不满足3NF的关系模式存在存储异常问题,包括数据冗余和修改异常。
(1)数据冗余:如果某代理商代理100个航班的售票,那么在机票代理的关系模式中就要出现100个元组,该代理商的名称、客服电话也随之重复出现100次。
(2)修改异常:由于上述冗余问题,当需要修改该代理商的客服电话时,就要修改100个元组中的客服电话值,否则就会出现客服电话值不一致的现象。
2)解决存储异常的典型方案是进行模式分解,但在本题中机票代理已是逆规范化的产物,故可使用触发器在修改时,检查并更新对应数据的方式来解决数据不一致的问题。
【问题2】
1)2个代理商都成功售出1张票,剩余票数为0。
2)数据库的并发操作会带来一些数据不一致问题,例如,丢失修改、读脏数据和不可重复读等。
(1)丢失修改。事务A与事务B从数据库中读入同一数据并修改,事务B的提交结果破坏了事务A提交的结果,导致事务A的修改被丢失。
(2)读脏数据。事务A修改某一数据,并将其写回磁盘,事务B读取同一数据后,事务A由于某种原因被撤消,这时事务A已修改过的数据恢复原值,事务B读到的数据就与数据库中的数据不一致,是不正确的数据。
(3)不可重复读。事务A读取数据后,事务B执行了更新操作,事务A使用的仍是更新前的值,造成了数据不一致性。
【问题3】
(1)加写锁
(2)加读锁
(3)加写锁
(4)等待
(5)得到通知
(6)加写锁
采用封锁的方法虽然可以有效防止数据的不一致性,但封锁本身也会产生一些麻烦,最主要就是死锁问题。也就是说,多个事务申请不同封锁,由于申请者均拥有一部分封锁权,而又需等待另外事务拥有的部分封锁而引起的永无休止的等待。
转载请注明原文地址:https://tihaiku.com/congyezige/2401374.html

最新回复(0)