《企业仓库管理系统数据库设计说明.doc》由会员分享,可在线阅读,更多相关《企业仓库管理系统数据库设计说明.doc(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、WORD1/33建筑大学建筑大学计算机科学与技术学院计算机科学与技术学院课程设计说明书课程设计说明书题目:企业仓库管理系统设计-提货管理与用户登录模块课程:数据库原理与应用课程设计院(部):计算机学院建筑大学计算机科学与技术学院建筑大学计算机科学与技术学院课程设计任务书课程设计任务书设计题目企业仓库管理系统设计-提货管理与用户登录模块WORD2/33已知技术参数和设计要求为了满足公司仓库管理的业务需求,先需要开发企业仓库管理系统。该系统对货物进行入库和出库管理。该系统的管理员为仓库管理员,同时他也是系统管理员。我实现的功能模块:用户登录管理、提货管理。具体描述如下:(1)用户登录注册管理。用户
2、注册。用户注册时,输出客户号和密码,如果客户号不存在则注册成功,若客户号已存在则用户存在,不能注册。用户登录。用户登录时,输出客户号和密码,与数据库中客户表匹配数据,如果客户号和密码都一样则登录成功,否则登录失败。(2)提货管理。申请提货登记。包括:货物号,客户号,货物数量。审核提货单。首先根据数据库客户信息表审核提货单中客户是否存在,若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。货物出库登记:包括:货物号,客户号,货物数量,出库日期。设计容与步骤1、需求分析2、数据库设计3、用 SQL 语句、触发器与存储过程等实现功能4、课程设计说明书设计工作计划与进度安排1、设计工作
3、 6 学时2、实现 4 学时3、课程设计说明书 2 学时WORD3/33设计考核要求1、考勤 20%2、课程设计说明书 50%3、答辩 30%WORD4/33指导教师(签字):教研室主任(签字):目录目录1.1.系统概述系统概述 5 52 2需求分析需求分析 6 62.1、数据流图:72.2、数据字典 92.2.1 数据项 92.2.2 数据结构.102.2.3 数据流.102.2.4 数据存储 11WORD5/332.2.5 处理过程 123.3.数据库概念结构设计数据库概念结构设计 13133.1、标识仓库管理系统中的实体和属性 133.2、确定实体间的联系 144.4.数据库逻辑结构设计
4、数据库逻辑结构设计 15154.1、关系模型 154.2、表与视图的设计 165.5.数据库物理设计与实施数据库物理设计与实施 19195.1 创建数据库 195.2 创建表 196.6.功能实现功能实现 26266.1 用户注册登录功能模块 266.2 仓库提货功能模块 297.7.总结总结 3232参考文献参考文献 33331.1.系统概述系统概述本作品完成的是企业仓库管理系统,前期主要是需求分析,包括数据与处理,并对有关企业仓库管理系统的管理员需求进行了综合、归纳和抽象,形成了一个独立于 DBMS 的概念模型,画出了 ER 图,然后本组在数据库中将概念模型转换成了数据模型,建了客户信息表
5、 Users,用到了仓库基本信息表 Storage,仓库库存信息表 Repertory,然后本小组分工实现了用户登录、采购管理、提货管理、入库管理、出库管理。WORD6/33本人实现的:(企业仓库管理系统设计提货管理与用户登录模块)1.未注册的客户先进行注册,注册后登录,注册的客户可直接登录系统。2.当客户提出提货请求时,产生一个提货单3.首先根据数据库客户信息表审核提货单中客户是否存在。4.若客户存在,则审核货物,查看货物数量是否充足。5.审核成功后进行货物出库登记,登记的容有货物号、客户号、货物数量、日期。在 OutS 表中插入登记的此条出库记录。2 2需求分析需求分析现要开发企业仓库管理
6、系统。经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应能完成下面的功能:(1)用户的注册,登录。(2)货物采购管理(3)仓库入库管理。(4)仓库提货管理。(5)仓库出库管理。WORD7/332.12.1、数据流图:、数据流图:图 2.1 企业仓库管理系统顶层数据流图WORD8/33图 2.2 企业仓库管理系统 0 层数据流图图 2.3 用户登录注册数据流图WORD9/33图 2.4 仓库提货管理数据流图2.22.2、数据字典、数据字典2.2.12.2.1 数据项数据项表 2.1数据项表数据项名称含义说明类型长度货物号唯一标识一个货物字符型20货物名货物的名称字符型20货物数量货物
7、的总数量整型货物价格货物的价钱整型供应商号唯一标识一个供应商字符型20供应商名供应商的名字字符型20客户号唯一标识一个客户字符型20客户密码客户的密码字符型20仓库号唯一标识仓库信息字符型20仓库总容量仓库的总容量信息整型仓库剩余容量仓库剩余容量整型出库编号用于记录货物出库字符型20出库日期用于记录货物何时出库字符型20WORD10/33管理员账号唯一标示管理员信息字符型20管理员密码管理员管理员的密码字符型202.2.2.2.2 2 数据结构数据结构(1)名称:客户含义说明:定义了一个客户有关的信息组成结构:客户号+客户密码(2)名称:货物含义说明:定义了一个货物有关的信息组成结构:货物号+
8、货物名+货物价格+货物型号+货物类别(3)名称:仓库含义说明:定义了一个仓库的有关信息组成结构:仓库号+仓库总容量+仓库剩余容量2.2.2.2.3 3 数据流数据流(1)数据流名称:入库单含义:客户入库时需要填写的信息来源:客户去向:审核客户数据流量:50 份/天组成:客户号+货物名+货物数量(2)数据流名称:出库单含义:客户出库时需要填写的信息来源:客户去向:审核客户数据流量:50 份/天组成:客户号+货物名+货物数量(3)数据流名称:提货单含义:客户提货时需要填写的信息来源:客户去向:审核客户数据流量:50 份/天组成:客户号+货物号+货物数量(4)数据流名称:违规单含义:如果无法提出所需
9、货物,会给出一个反馈WORD11/33来源:系统管理员去向:反馈给客户数据流量:50 份/天组成:无法提货原因2.2.42.2.4 数据存储数据存储(1)数据存储名称:管理员信息表含义说明:存放管理员的注册信息组成结构:管理员账号+管理员密码说明:用来存储管理员信息,管理员账号号是管理员的主属性(2)数据存储名称:客户信息表含义说明:存放客户的注册信息组成结构:客户号+客户密码说明:用来存储客户信息,客户号是客户的主属性(3)数据存储名称:货物信息表含义说明:存放货物的注册信息组成结构:货物号+货物名+货物价格说明:货物号为其主属性,货物价格为当前该货物的入库价格(4)数据存储名称:仓库信息表
10、含义说明:存放仓库的相关信息组成结构:仓库号+仓库总容量+仓库剩余容量说明:仓库号为其主码,要求能根据审核仓库的剩余容量查询货物的存放与否。(5)数据存储名称:出库信息表含义说明:存放货物出库信息WORD12/33组成结构:出库编号+货物号+客户号+货物数量+货物价格+仓库号+出库日期说明:出库编号为其主码(6)数据存储名称:仓库库存信息表含义说明:用来存储当前仓库存储信息组成结构:仓库号+货物号+客户号+货物数量说明:仓库号,货物号,客户号是其主码,货物数量为当前仓库中该客户的该货物的数量。(7)数据存储名称:提货单信息表含义说明:存放客户提货时所需的提货单组成结构:客户号+货物号+货物量说
11、明:仓库号,货物号,客户号是其主码,货物数量为当前仓库中该客户的该货物的数量。2.2.52.2.5 处理过程处理过程处理过程名称输入输出加工逻辑货物入库入库单核对正确后的入库信息表将货物按照入库单清点正确后,审核通过,否则不通过货物出货出货单核对正确后的出库信息表将货物按照出库单清点正确后,审核通过,否则不通过订货单订货单核对正确后的订货单按照客户的订货情况进行核对发货单发货单核对正确后的发货单按照客户的订货情况进行核对然后发货WORD13/333.3.数据库概念结构设计数据库概念结构设计3.13.1、标识仓库管理系统中的实体和属性、标识仓库管理系统中的实体和属性参照数据字典中对数据存储的描述
12、,可初步确定实体和属性为:管理员管理员账号,管理员密码货物货物号,货物名,货物价格,货物型号,货物类别客户客户号,客户密码 供应商供应商编号,供应商名仓库仓库号,仓库的总容量,仓库的剩余容量入库信息入库编号,货物号,客户号,货物数量,仓库号,入库日期出库信息货物号,客户号,货物数量,出库日期仓库存信息仓库号,货物号,客户号,货物数量提货单信息货物号,客户号,货物数量其中有下划线的属性为实体的码。WORD14/333.23.2、确定实体间的联系、确定实体间的联系图 3.1 企业仓库管理系统总 E-R 图图 3.2 仓库提货管理 E-R 图WORD15/334.4.数据库逻辑结构设计数据库逻辑结构
13、设计4.14.1、关系模型、关系模型表 4.1 关系模式表将在概念结构阶段得到的基本 E-R 图转换成关系模型,如下表所示:关系名属性与码其他约束条件货物货物号,货物名,货物价格货物号为主码货物名不允许为空客户客户号,客户密码客户号为主码客户密码不允许为空仓库仓库号,总容量,剩余容量仓库号为主码总容量、剩余容量不允许为空入库信息入库编号,货物号,客户号,货物数量,仓库号,入库日期入库编号为主码货物号,客户号不允许为空出库信息货物号,客户号,货物数量,出库日期货物号,客户号为主码,并且为外码。货物号,客户号不允许为空仓库库存信息仓库号,货物号,客户号,货物数量量仓库号,货物号,客户号为主码,并且
14、为外码。货物号,客户号不允许为空管理员信息管理员账号,管理员密码管理员账号为主码密码不允许为空WORD16/334.24.2、表与视图的设计、表与视图的设计表 4.2 Users(客户表)字段名字段含义字段类型长度小数是否为空列级约束Uid客户号VARCHAR20NOT NULLPrimarykeyUpassword客户密码VARCHAR20NOT NULLNOT NULL函数依赖有:Uid Upassword可以看出非主属性 Upassword 完全函数依赖于 Uid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以 Users 属于 3NF 甚至于更高的级别。表 4.3 Goods(
15、货物表)字段名字段含义字段类型长度小数是否为空列级约束Gid货物号VARCHAR20NOT NULLPrimarykeyGname货物名VARCHAR20NOT NULLNOT NULLGprice货物价格INTNOT NULLNOT NULLGmodel货物型号VARCHAR20NOT NULLNOT NULLGsort货物类别VARCHAR20NOT NULLNOT NULL函数依赖有:Gid Gname,Gid Gprice,Gid Gmodel,Gid Gsort可以看出非主属性 Gname,Gprice,Gmodel,Gsort 完全函数依赖于 Gid,并且此表绝不会存在传递函数依赖
16、和部分函数依赖问题,所以 Users 属于 3NF 甚至于更高的级别。表 4.4 Storage(仓库信息表)WORD17/33字段名字段含义字段类型长度小数是否为空列级约束Sid仓库号VARCHAR20NOT NULLPrimarykeySstocks仓库总容量INTNOT NULLNOT NULLSsstock剩余容量INTNOT NULLNOT NULL函数依赖有:Sid Sstocks,Sid Ssstock可以看出非主属性 Sstocks、Ssstock 完全函数依赖于 Sid,并且 Storage 表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以 Sto
17、rage 属于 3NF。表 4.5 Lading(提货单信息表)字段名字段含义字段类型长度小数是否为空列级约束Uid客户号VARCHAR20NOT NULLForeignkeyreferencesUsers(Uid)Gid货物号VARCHAR20NOT NULLForeignkeyreferencesGoods(Gid)Lnumber提货数量INTNULL函数依赖有:(Uid,Gid)Lnumber可以看出非主属性 Lnumber 完全函数依赖于(Uid,Gid),并且 Lading 表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以 Lading 属于 3NF。表
18、4.6 OutS(出库信息表)字段名字段含义字段类型长度小数是否为空列级约束WORD18/33Gid货物号VARCHAR20NOT NULLForeignkeyreferencesGoods(Gid)Uid客户号VARCHAR20NOT NULLForeignkeyreferencesUsers(Uid)Gnumber货物数量INTNULLMODIFYDATE出货日期datatimeNULL表级约束Primarykey(Gid,Uid)函数依赖有:(Gid,Uid)Gnumber,MODIFYDATE非主属性 Gnumber,MODIFYDATE完全函数依赖于(Gid,Uid),且不存在传递函
19、数依赖,即属于 3NF。表 4.7 Repertory(仓库库存信息表)字段名字段含义字 段 类型长度小数是否为空列级约束Sid仓库号VARCHAR10NOT NULLForeignkeyreferencesStorate(sid)Gid货物号VARCHAR20NOT NULLForeignkeyreferencesCargo(gid)Gnumber货物数量INTNULL表级约束Primarykey(Sid,Gid)函数依赖有:(Sid,Gid)Gnumber可以看出非主属性 Gnumber 对(Sid,Gid)是完全函数依赖,并且不存在传递依赖,即每一个非主属性既不部分依赖于码也不传递依赖于
20、码,所以 Repertory 属于 3NF。WORD19/335.5.数据库物理设计与实施数据库物理设计与实施5.15.1 创建数据库创建数据库createdatabase 企业仓库系统;5.25.2 创建表创建表创建 Users 表:createtable Users(Uidvarchar(20)notnullprimarykey,Upassword varchar(20)notnull);WORD20/33创建 Goods 表:createtable Goods(Gid varchar(20)notnullprimarykey,Gname varchar(20)notnull,Gprice
21、 intnotnull,Gmodel varchar(20)notnull,Gsort varchar(20)notnull);创建 Storage 表:createtable Storage(Sidvarchar(20)notnullprimarykey,WORD21/33Sstocks intnotnull,Ssstock intnotnull);创建 Lading 表:createtable Lading(Lid varchar(20)primarykey,Uidvarchar(20),Gid varchar(20),Lnumber int);创建 Reterpory 表:WORD22/
22、33createtable Reterpory(Sidvarchar(20)notnull,Gid varchar(20)notnull,Gnumber intnotnull,primarykey(Sid,Gid),foreignkey(Sid)references Storage(Sid),foreignkey(Gid)references Goods(Gid),);创建 OutS 表:createtable OutS(Gid varchar(20),Uidvarchar(20),Gnumber int,MODIFYDATE datetime,foreignkey(Gid)reference
23、s goods(Gid),foreignkey(Uid)references users(Uid)WORD23/33);向 Users 表中插入数据:insertinto Users(Uid,Upassword)values(U1,aaa);insertinto Users(Uid,Upassword)values(U2,bbb);insertinto Users(Uid,Upassword)values(U3,ccc);insertinto Users(Uid,Upassword)values(U4,ddd);insertinto Users(Uid,Upassword)values(U5,
24、eee);insertinto Users(Uid,Upassword)values(U6,fff);insertinto Users(Uid,Upassword)values(U7,ggg);insertinto Users(Uid,Upassword)values(U8,hhh);insertinto Users(Uid,Upassword)values(U9,jjj);insertinto Users(Uid,Upassword)values(U10,kkk);select*from Users;WORD24/33向 Goods 表中插入数据:insertinto Goods(Gid,G
25、name,Gprice,Gmodel,Gsort)values(G1,a,20,A,一级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G2,b,10,B,二级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G3,c,50,C,一级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G4,d,70,D,三级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)val
26、ues(G5,e,20,E,二级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G6,f,100,F,一级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G7,g,140,G,三级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G8,h,60,H,一级);insertinto Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G9,i,80,I,二级);insertin
27、to Goods(Gid,Gname,Gprice,Gmodel,Gsort)values(G10,j,90,J,一级);select*from Goods;WORD25/33向Reterpory表中插入数据:insertinto Reterpory values(S1,G1,600);insertinto Reterpory values(S2,G2,800);insertinto Reterpory values(S3,G3,1000);insertinto Reterpory values(S4,G4,900);insertinto Reterpory values(S5,G6,800)
28、;insertinto Reterpory values(S6,G7,700);insertinto Reterpory values(S7,G8,600);insertinto Reterpory values(S8,G5,950);insertinto Reterpory values(S9,G10,500);insertinto Reterpory values(S10,G9,1100);select*from Reterpory;WORD26/336.6.功能实现功能实现6.16.1 用户注册登录功能模块用户注册登录功能模块1.用户注册时,输出客户号和密码,如果客户号不存在则注册成功,
29、若客户号已存在则用户存在,不能注册。-用户注册存储过程createprocedure insertUsers(uid varchar(20),upassword varchar(20),returnname varchar(20)output)asifexists(selectUidfrom Users whereUid=uid)beginWORD27/33set returnname=用户存在endelsebegininsertinto Users values(uid,upassword)set returnname=注册成功endgo2.用户登录时,输出客户号和密码,与数据库中客户表匹配
30、数据,如果客户号和密码都一样则登录成功,否则登录失败。-用户登录存储过程createprocedure loginUsersWORD28/33(uid varchar(20),upassword varchar(20),returnname varchar(20)output)asifexists(selectUid,Upassword-判断登录信息是否正确from UserswhereUid=uid and Upassword=upassword)beginset returnname=登陆成功endelsebeginset returnname=登录失败endgoWORD29/336.26
31、.2 仓库提货功能模块仓库提货功能模块1.当客户提出提货请求时,产生一个提货单。(运用 insert 语句将提货单信息插入到提货信息表 Lading)insertinto Lading values(L1,U1,G1,500);insertinto Lading values(L2,U3,G9,1000);insertinto Lading values(L3,U8,G7,800);insertinto Lading values(L4,U19,G11,600);WORD30/332.首先根据数据库客户信息表审核提货单中客户是否存在。(通过建立一个视图 Lading_Uid 显示存在的客户与信
32、息)createview Lading_Uidasselect Users.Uid,Uname,Lading.Gid,Lading.Lnumberfrom Users,Ladingwhere Users.Uid=Lading.Uid;select*from Lading_Uid;3.若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。(通过建立一个视图WORD31/33Lading_Gnumber 显示货物数量充足的货物号与信息)createview Lading_Gnumberasselect Lading_Uid.Uid,Uname,Lading_Uid.Gid,Ladin
33、g_Uid.Lnumberfrom Lading_Uid,Reterporywhere Lading_Uid.Gid=Reterpory.Gid and Lading_Uid.Lnumber=Reterpory.Gnumber;select*from Lading_Gnumber;4.审核成功后进行货物出库登记,登记的容有货物号、客户号、货物数量、日期。在 OutS 表中插入登记的此条出库记录。(编写一个触发器 Lading_outs,实现在提货单信息表 Lading 插入数据时,自动审核客户号和货物数量,审核完在 OutS 表中插入登记的此条出库记录)createtrigger Lading
34、_outson LadingafterinsertasbeginWORD32/33insertinto outS(Gid,Uid,Gnumber,MODIFYDATE)select Lading_Gnumber.Gid,Lading_Gnumber.Uid,Lading_Gnumber.Lnumber,getdate()as MODIFYDATEfrom Lading_Gnumber;deletefrom Lading;select*from OutS;end;7.7.总结总结这次课程设计我们组完成了企业仓库管理系统的设计,我完成了其中的提货管理和用户登录模块,从需求分析到概念结构设计,再到逻
35、辑结构设计,最后WORD33/33到数据库物理设计与实施,亲自参与整个数据库的设计过程。在建表之前,我们组一起讨论了要建几个表的问题,为了减少冗余,我们将提货单信息表和出库信息表分别建表。在建立功能过程中,对触发器和存储过程理解不深刻,通过看书和上网查询完善了触发器和存储过程。通过此次课程设计,掌握了表与视图的建立,也学会了触发器与存储过程的建立,提高了自己写代码的能力,深刻的体会了数据库的应用方法和设计理念,更加深刻的体会了数据库的实际应用,也对很多概念用法有了更进一步的理解。同时学会了遇到困难要有吃苦耐劳的精神,同时认识到了团队合作的重要性。参考文献参考文献1 萨师煊,王珊.数据库系统概论M.:高等教育,2006.2 甘仞初.管理信息系统M.:机械工业,2002.3 昆,SQL SERVER2000 课程设计案例精编,:中国水利水电,20064 钱雪忠.数据库原理与应用M:邮电大学,2007.5 仝春灵,数据库原理与应用SQL Server 2000,:电子工业,20076 辛赫(Singh.S.K)、何玉洁等.数据库系统概念、设计与应用M:机械工业,20087 周成兴.SQL 与关系数据库理论M:清华大学,2010
限制150内