实验(课程设计)报告名称:网络数据库课程设计姓名:刘岩学号:071103417年级专业:11级信息管理与信息系统年月日成绩:评语:指导教师:(签名)一、课程设计的目的及意义这次的课程设计,我们的任务是设计一个针对某商品批发销售企业进销存业务的数据系统。
这个系统中涵盖了采购部门、销售部门和库存部门等各项管理部门,也涉及到采购、销售以及库存管理多方面的智能。
该系统能够对客户的信用、订单、供应商、出进货等信息提供存储、更新、查询、统计等功能,从而实现企业根据业务事务发生的不同情况,正确计算产品库存的功能,其中包括:基本资料的维护、采购功能、批发功能、库存管理、盘点管理、维护日志记录等。
这样以来,企业能够合理控制进销存各个环节,提高了资金的利用率,从而实现管理的高效率、实时性、安全性、科学化、现代化和智能化。
二、课设计划1、交付成果小组共上交四份成果,包括系统设计书、开发报告、ERwin设计文件、2、进度计划准备工作——2013年12月23日晚。
搜集课程设计的材料、查看数据库设计相关内容,并了解本课设的整体流程。
人员分工——2013年12月23日晚。
小组对本课设进行讨论,并进行分工。
课程设计——2013年12月23日至27日实体关系设计—24日午完成。
分配到这个部分的成员首先熟知此业务的流程以及功能要求,建立实体逻辑和物理模型。
表空间及数据文件—24日午前完成。
负责创建用户及两个表空间,一个存放表一个存放索引。
建表及索引—25日午完成。
建表及创建相应的索引。
存储过程及触发器—26日晚前完成。
创建存储过程以及采购和销售触发器,并分别进行测试。
3、质量保证计划数据建模规范性:构建数据库逻辑模型,由于是项目组成员之间在数据库层面沟通交互的依据,必须规范作图,包括表、主键、外键及关系。
命名字段尤其要注意,既要让人易懂也要简练,并注意字长等。
表的设计规范性:对于主键的设置,除临时表和外部表外都要建立主键;还有就是表空间的使用规范,对于很少用于增删改的表、经常发生INSERT的表以及发生两种以上DML操作的动态表,要放在不同的表空间中。
索引建立规范:针对大数据量表应该先在唯一约束列上建立普通索引,再添加唯一性约束。
还要注意索引重建的规范。
SQL访问规范:要注意增删改语句的使用,避免语句的使用错误。
4、小组分工与协作计划小组分工:构建实体关系:刘岩(负责人)、林智敏(检查者)表空间及数据文件:张丛(负责人)、吴乾煌(检查者)创建索引:张丛(负责人)、吴乾煌(检查者)存储过程:张凯(负责人)、杨煌辉(检查者)触发器:马成龙(负责人)、谢佳辉(检查者)(备注:指导者——张瑜)三、技术路线与关键技术说明技术路线1、在Erwin中建立ER图2、在sal*plus中创建dna用户,并授予sysdba权限3、利用Erwin将建立的ER图导入Oracle数据库中的dna模式中4、建立表空间及相关数据文件5、设置表特性,商品主文件表item只要进行update操作,设置其pctfree为20%(默认值为10%),pctused为40%(默认值为60%);库存流水帐invlsk中,主要进行insert操作,pcdfree较小,设为5%,pcdused较大,设为60%。
6、向商品主文件item表、客商表cs、采购单porder、采购明细表porder_dtl、销售明细表sale_dtl分别插入三条记录,以便于触发器的测试工作7、创建四个触发器,有商品价格变更触发器tri_item_dna、采购单触发器dna_porder、销售单的触发器dna_sale、客商触发器cs_trigger,并测试其功能8、创建存储过程upd_inv9、建立五个索引10、逻辑数据库的备份关键技术说明整个设计的主要的技术有设计ER图及触发器的功能1、ER图的建立在ERwin中建立9张表,有商品主文件表(item),商品日志变更表(itemchange),客商表(cs),客商日志记录表(csdiary),销售单(sale),销售明细表(sale_dtl)),采购单(Porder),采购单明细表(Porder_dtl),库存流水库(invlsk),设计其逻辑模型和物理模型。
商品主文件包item创建的相关代码如下:CREATE TABLE item(itemno V ARCHAR2(8) NOT NULL ,--商品编号itemno字符类型varchar,长度为8,不为空itemname V ARCHAR2(20) NULL ,sprcification V ARCHAR2(40) NULL ,unit V ARCHAR2(10) NULL ,sale_price NUMBER(8,2) NULL ,ScheduledReceive NUMBER(9,2) NULL ,inventory NUMBER(9,2) NULL ,cg_price NUMBER(9,2) NULL);ER图的逻辑模型如下:2、触发器的建立其中共建立了4个触发器,以下是其中的两个触发器创建采购单触发器dna_pordercreate or replace trigger dna_porder --创建采购触发器dna_porderbefore insert or update of status on porderfor each rowdeclare --声明变量oldinven,newinvenoldinven item.inventory%type;newinven item.inventory%type;begin --如果新增订单状态值为0,违反规则if inserting and nvl(:new.status ,'x')<>'0' thenraise_application_error(-20101,'初始状态必须为零');elsif inserting thenreturn ;end if;if :old.status ='0' and :new.status ='1' then --订单状态从0到1要增加在途量for i in (select itemno,ordquant from porder_dtl where po_no =:new.po_no)loop update item set scheduledreceive =nvl(scheduledreceive,0) + i.ordquantwhere itemno=i.itemno;--更新商品主文件表的在途量和库存量end loop ;elseif :old.status ='1' and :new.status ='2' then--订单状态从1到2收货,在途量减少,库存量增加for i in (select itemno,recquant from dna.porder_dtl where po_no =:new.po_no)loop select inventory into oldinven from item where itemno=i.itemno;update item set inventory =nvl(inventory,0) + i.recquant where itemno=i.itemno;--更新商品主文件表的在途量和库存量update item set scheduledreceive =nvl(scheduledreceive,0) - i.recquant where itemno=i.itemno;--更新商品主文件表的在途量和库存量select inventory into newinven from item where itemno=i.itemno;insert into invlsk(itemno ,chgreason,oldinv,chgquant,newinv)values(i.itemno,:new.po_no,oldinven,i.recquant,newinven);end loop;elseif :old.status ='1' and :new.status ='3' then --订单状态从1到3订单作废,在途量减少,库存不变for i in (select itemno,ordquant from porder_dtl where po_no =:new.po_no)loopupdate item set scheduledreceive =nvl(scheduledreceive,0) - i.ordquant where itemno=i.itemno;--更新商品主文件表的在途量和库存量end loop;end if ;end dna_porder;创建销售触发器dna_sale四、课设计划实施情况我和同学在这次课设实验里完成了实体关系模型的建立,虽然这部分在整个计划中属于比较简单的部分,但是还是有些难度,一开始不是太明白怎么应用软件、构建表,于是去观看别的小组如何建立,回来后现在草稿纸上设计表的内容,字段名、类型以及长度也都是参考别的小组设计的,最终通过创建九个表以及联系成功完成。
之后的部分由其他小组负责,我们在旁边负责提意见以及去找别的组寻找帮助。
在这个过程中,我们秉承着团队集体协作的观念,一起探讨、研究、分析问题,分配好每次成员各自的任务,从最初的问题分析道整体流程的确定再到触发器以及存储过程的整体设计中,各个组员积极承担各项任务,使得小组课程设计在能够短期内有效完成。
当然,别的小组对我们的热心帮助也是少不了的,这种团队合作的方式对学习是十分有帮助的。
五、总结小组总结本次课程设计时间为一周,我们小组成员中有几个人以为时间充足,在开始的第一天上午没有去教室,导致老师点名的时候没有人在教室,影响了老师对我们小组的印象。
后来在小组成员8人集体到齐的情况下,我们终于正式开始了我们的课设之旅,在课程设计中,我们秉承着团队集体协作的观念,一起探讨、研究、分析问题,分配好每次成员各自的任务,从最初的问题分析道整体流程的确定再到触发器以及存储过程的整体设计中,各个组员积极承担各项任务,使得小组课程设计在能够短期内有效完成。
但是由于小组成员整体水平的限制,我们没有一个领导者,在实施过程中我们小组的每个成员几乎都遇到大量的问题而得不到解决,导致我们小组的效率比较低。
后来在其他小组完成后,我们赶紧找了几位大神来教我们,在她们的辛苦教导下我们才艰难的完成了自己小组的课设任务。