Oracle仓库管理系统课程设计报告数据库部分含Oracle代码Word文档格式.docx
《Oracle仓库管理系统课程设计报告数据库部分含Oracle代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle仓库管理系统课程设计报告数据库部分含Oracle代码Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
查询货物类别及货物的信息、数量和货
物流动的规则(对货物出仓进仓的要求);
并可以对以上查询进行修
改;
可以查询某一天货物流动的信息,以及出仓及入仓的详细信息。
二、系统需求分析
利用用例图、类图、E-R图对系统进行需求分析。
仓库管理系统可以实现对仓库货物信息、出仓货物管理、进仓货物管理、货物数量管理以及货物出入仓限制规则,以下为其用例图、类图及E-R图。
仓库管理系统用例图
类图
表1:
产品信息表PRO
字段名
数据类型
长度
约束
说明
PROID
NUMBER
11
主码
产品编号
PRONAME
VARCHAR2
20
NOTNULL
产品名称
PRODRESS
50
产品地址
DREPHONE
产品地址号码
BDATE
5
保质天数
DEMO
100
表2:
产品信息管理PRO_MAN
主码,外码
BIRDATE
DATE
产品生产日期
ZNUM
产品数量
表3:
产品出库管理C_PRO
CDATE
出库日期
生产日期
CNUM
10
出库数量
表4:
产品入库日期R_PRO
RDATE
入库日期
RNUM
入库数量
表5:
产品仓库限制规则
表6:
管理员表ADMIN
ID
管理员编号
USERNAME
管理员账号
PASSORD
账号密码
E-R图
三、数据库对象设计
1、表设计
通过对仓库管理系统的业务分析及查询资料了解,设计该系统的6个关系表,详情见上边类图部分。
2、序列设计
为了方便仓库产品管理,在数据库中用以下序列产生相应编号
C_R_VIEW:
产生产品编号,起始值100。
3、视图设计
为了方便仓库管理员查询出入库情况、每个生产日期的库存信息及产品的总数量,创建下列视图。
(1)创建名为“C_R_PRO_VIEW”的视图,用于查看产品的出入库汇总情况,包
括出库的产品编号,入库的产品编号,产品名称,入库日期,出库日期,出库产品
的生产日期,入库产品的生产日期,出库数量,入库数量。
(2)创建名为“SNUM”的视图,用于查询一种产品的总库存量,包括产品编号,
产品总数量。
(3)创建名为“ZNUM_PRO_VIEW”的视图,用于查询产品的库存信息,包括不同
生产日期的库存量。
4、PL/SQL功能模块设计
利用PL/SQL程序创建下列各种数据库对象。
(1)创建一个当仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产
日期及保质期的函数。
(2)创建一个计算距保质期时间的存储过程。
(3)创建一个计算出库后数量的函数。
(4)创建一个计算入库后数量的函数。
四、数据库对象创建
描述数据库对象中表的创建、序列的创建、视图的创建、存储过程的创建,触发器的创建等内容,实现系统的基本功能。
1、表的创建
(1)产品信息PRO:
CREATETABLE"
USERS"
."
PRO"
(
"
PROID"
NUMBER(11)NOTNULL,
PRONAME"
VARCHAR2(20)NOTNULL,
PRODRESS"
VARCHAR2(50),
DREPHONE"
NUMBER(20),
BDATE"
NUMBER(5)NOTNULL,
DEMO"
VARCHAR2(100),
PRIMARYKEY("
)VALIDATE)
TABLESPACE"
(2)仓库产品管理PRO_MAN
PRO_MAN"
(
"
NUMBER(11)NOTNULL,
BIRDATE"
DATENOTNULL,
ZNUM"
NUMBER(20)NOTNULL,
"
)VALIDATE,
FOREIGNKEY("
)REFERENCES"
SYS"
("
(3)创建入库管理表R_PRO
R_PRO"
RDATE"
RNUM"
NUMBER(10)NOTNULL,
)VALIDATE,
FOREIGNKEY("
)VALIDATE)
(4)出库产品管理C_PRO
C_PRO"
CDATE"
CNUM"
NUMBER(10)NOTNULL,
(5)管理规则PRO_LIM
PRO_LIM"
MINUM"
NUMBER(10)NOTNULL,
MAXUM"
LBIRDATE"
"
TABLESPACE"
(6)管理员表ADMIN
ADMIN"
ID"
USERNAME"
VARCHAR2(10)NOTNULL,
PASSWORD"
VARCHAR2(11)NOTNULL,
PRIMARYKEY("
)VALIDATE)TABLESPACE"
2、序列的创建
CREATESEQUENCEC_R_VIEWNOCYCLENOORDERNOCACHENOMAXVALUEMINVALUE100INCREMENTBY1STARTWITH100
3、视图的创建
(1)产品的出入库情况C_R_PRO_VIEW
CREATEORREPLACEVIEWC_R_PRO_VIEW
AS
SELECTCPROID,RPROID,PRONAME,RDATE,CDATE,CBIRDATE,RBIRDATE,CNUM,RNUMFROMPRO,
(SELECT
C_PRO.PROIDASCPROID,R_PRO.PROIDASRPROID,RDATE,CDATE,C_PRO.BIRDATEASCBIRDATE,R_PRO.BIRDATEASRBIRDATE,CNUM,RNUMFROMC_PROFULLJOINR_PROONC_PRO.PROID=R_PRO.PROIDandCDATE=RDATEORDERBYRPROID)R_CWHEREPRO.PROID=CPROIDANDPRO.PROID=RPROID
(2)产品总数量:
SNUM
CREATEORREPLACEVIEWSNUM
SELECTPRO.PROID,SUM(ZNUM)SNUMFROMPRO,PRO_MAN
WHEREPRO.PROID=PRO_MAN.PROIDGROUPBYPRO.PROID
(3)产品的库存信息:
ZNUM_PRO_VIEW
CREATEORREPLACEVIEWZNUM_PRO_VIEW
SELECTPRO_MAN.PROID,PRONAME,BIRDATE,BDATE,ZNUMFROM
PRO,PRO_MANWHERPRO.PROID=PRO_MAN.PROID
4、PL/SQL程序设计
(1)仓库产品少于最少数量或者大于最大数量时显示出产品数量、生产日期及保质期来:
CREATEORREPLACEFUNCTIONMIN_MAX_NUM_SHOW(
V_PROIDNUMBER,V_BIRDATEOUTDATE,V_BDATEOUTNUMBER)
RETURNNUMBER
AS
V_SNUMNUMBER;
V_MINUMNUMBER;
V_MAXUMNUMBER;
BEGIN
SELECTSUM(ZNUM)INTOV_SNUMFROMPRO_MANWHEREPROID=V_PROID;
SELECTMINUM,MAXUMINTOV_MINUM,V_MAXUMFROMPRO_LIMWHEREPROID=V_PROID;
SELECTBIRDATEINTOV_BIRDATEFROMPRO_MANWHEREPROID=V_PROID;
SELECTBDATEINTOV_BDATEFROMPROWHEREPROID=V_PROID;
IFV_SNUM-V_MINUM<
=0ORV_SNUM-V_MAXUM>
=0THEN
RETURNV_SNUM;
ENDIF;
END;
(2)计算距保质期时间:
CREATEORREPLACEPROCEDUREPRO_B(
V_PROIDNUMBER)
AS
V_DAYSNUMBER;
V_LBIRDATENUMBER;
CURSORC_BIRDATEISSELECTBIRDATEFROM
PRO_MANWHEREPROID=V_PROID;
BEGIN
SELECTLBIRDATEINTOV_LBIRDATEFROMPRO_LIM
WHEREPROID=V_PROID;
FORV_BIRDATEINC_BIRDATELOOP
IFV_DAYS:
=(SYSDATE-V_BIRDATE)>
=V_LBIRDATETHEN
DBMS_OUTPUT.PUTLINE(V_DAYS);
ENDLOOP;
END;
(3)计算出库后数量:
CREATEORREPLACEFUNCTIONA_C_NUM(
V_PROIDNUMBER,V_BIRDATEOUTDATE)
RETURNNUMBER
V_CZNUMNUMBER;
BEGIN
SELECTBIRDATEINTOV_BIRDATEFROMC_PROWHEREPROID=V_PROID;
SELECTZNUM-CNUMINTOV_CZNUMFROM(
SELECTPRO_MAN.PROID,PRO_MAN.BIRDATECBIRDATE,CNUM,ZNUMFROM
C_PRO,PRO_MANWHERE
PRO_MAN.PROID=C_PRO.PROIDANDPRO_MAN.BIRDATE=C_PRO.BIRDATE)A_C
WHEREPROID=V_PROIDANDA_C.CBIRDATE=V_BIRDATE;
RETURNV_CZNUM;
(4)计算入库后数量:
CREATEORREPLACEFUNCTIONA_R_NUM(
V_RZNUMNUMBER;
SELECTBIRDATEINTOV_BIRDATEFROMR_PROWHEREPROID=V_PROID;
SELECTZNUM+RNUMINTOV_RZNUMFROM(
SELECTPRO_MAN.PROID,PRO_MAN.BIRDATERBIRDATE,RNUM,ZNUMFROM
R_PRO,PRO_MANWHERE
PRO_MAN.PROID=R_PRO.PROIDANDPRO_MAN.BIRDATE=R_PRO.BIRDATE)A_R
WHEREPROID=V_PROIDANDA_R.RBIRDATE=V_BIRDATE;
RETURNV_RZNUM;
五、总结
在这次的数据库实践中,我学到了很多,也收获了很多经验。
刚刚开始时由于认识不足以及搜素资料不完善,将此数据库系统设计不完善,使系统无法实现。
在老师的教导下,我又重新将仓库管理系统进行分析,并找同学讨论,不断完善,经过一番努力后,将此系统完成,虽然不是很复杂,功能也不是很多,但是这注入了我全部的思想。
由此次试验,我学会了做事情要循序渐进,不可能一次性就能将事情做到十全十美,在做的过程中不断思考,将事情渐渐完善。
此次的实践还让我的数据库知识更扎实,在试验中运用了存储过程,视图等功能,让我学到的知识能更加熟练掌握。