实验7进销存系统数据库设计实验内容简介业务描述对象:某商品批发销售企业进销存业务功能要求(根据业务事务发生状况,正确计算产品库存)基本资料维护(商品主文件、客商信息)采购功能……日志记录目标设计实体关系模型建立索引创建触发器或存储过程实现业务逻辑(正确计算库存)、日志记录(记录库存变化情况,基础信息变更记录)一、实体关系设计基本资料维护创建商品主文件表客户_供应商表采购功能采购信息表的创建pOrderMst采购订单主表pOrderDtl采购订单明细表业务规则011213订单状态0123含义订单草稿或未经确认的订单确认的订单,增加商品在途量已收货的订单,减少商品在途量,增加商品库存量作废的订单,减少商品在途量pOrderpOrder_dtl簇表采购单表触发器正向工程注意下列选项createorreplacetriggerpOrder_biubeforeinsertorupdateofstatusonporderforeachrowdeclare--localvariablesherebegin--如果新增订单状态值为0,违反规则ifinsertingandnvl(:new.status,'x')'0'thenraise_application_error(-20101,'初始状态必须为0');elsifinsertingthenreturn;endif;if:old.status='0'and:new.status='1'then--审核订单,在途量增加forrecin(selectitemno,ordquantfrompOrder_dtlwherepo_no=:new.po_no)LoopupdateitemsetscheduledReceive=Nvl(scheduledReceive,0)+rec.ordquantwhereitemno=rec.itemno;endLoop;elsif:old.status='1'and:new.status='2'then--收货,在途量减少,库存增加forrecin(selecta.itemno,a.ordquant,a.recquan,b.inventoryfrompOrder_dtla,itembwherea.po_no=:new.po_noanda.itemno=b.itemno)Loopinsertintoinvbooking(itemno,billno,invdate,oldquan,incquan,newquan)values(rec.itemno,:new.po_no,sysdate,rec.inventory,rec.recquan,Nvl(rec.inventory,0)+rec.recquan);updateitemsetscheduledReceive=Nvl(scheduledReceive,0)-rec.ordquant,inventory=Nvl(inventory,0)+rec.ordquantwhereitemno=rec.itemno;endLoop;endif;endpOrder_biu;二、建立索引假设需要经常建立查询,如何创建索引查询特定时间段内新建档的商品主文件select*fromItemMasterwhereCrtDate查询特定时间段内新建档的客商信息三、存储过程与触发器订单状态变化导致商品库存记录更新,新增库存流水账实验7要求实现采购功能ER设计、索引、触发器按小组完成练习注意:实验报告独立写