• 648.55 KB
  • 2022-05-16 18:34:43 发布

企业仓库管理系统数据库设计

  • 26页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
~~山东建筑大学计算机科学与技术学院课程设计说明书题目:企业仓库管理系统设计-提货管理及用户登录模块课程:数据库原理及应用课程设计院(部):计算机学院~~~ ~~山东建筑大学计算机科学与技术学院课程设计任务书设计题目企业仓库管理系统设计-提货管理及用户登录模块已知技术参数和设计要求为了满足公司仓库管理的业务需求,先需要开发企业仓库管理系统。该系统对货物进行入库和出库管理。该系统的管理员为仓库管理员,同时他也是系统管理员。我实现的功能模块:用户登录管理、提货管理。具体描述如下:(1)用户登录注册管理。①用户注册。用户注册时,输出客户号和密码,如果客户号不存在则注册成功,若客户号已存在则用户存在,不能注册。②用户登录。用户登录时,输出客户号和密码,与数据库中客户表匹配数据,如果客户号和密码都相同则登录成功,否则登录失败。(2)提货管理。①申请提货登记。包括:货物号,客户号,货物数量。②审核提货单。首先根据数据库客户信息表审核提货单中客户是否存在,若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。③货物出库登记:包括:货物号,客户号,货物数量,出库日期。设计内容与步骤1、需求分析2、数据库设计3、用SQL语句、触发器与存储过程等实现功能4、课程设计说明书设计工作计划与进度安排1、设计工作6学时2、实现4学时3、课程设计说明书2学时设计考核要求1、考勤20%2、课程设计说明书50%3、答辩30%指导教师(签字):教研室主任(签字):~~~ ~~目录1.系统概述42.需求分析42.1、数据流图:52.2、数据字典72.2.1数据项72.2.2数据结构82.2.3数据流82.2.4数据存储92.2.5处理过程103.数据库概念结构设计103.1、标识仓库管理系统中的实体和属性103.2、确定实体间的联系114.数据库逻辑结构设计124.1、关系模型124.2、表与视图的设计125.数据库物理设计及实施155.1创建数据库155.2创建表156.功能实现206.1用户注册登录功能模块206.2仓库提货功能模块227.总结25参考文献26~~~ ~~1.系统概述本作品完成的是企业仓库管理系统,前期主要是需求分析,包括数据与处理,并对有关企业仓库管理系统的管理员需求进行了综合、归纳和抽象,形成了一个独立于DBMS的概念模型,画出了E—R图,然后本组在数据库中将概念模型转换成了数据模型,建了客户信息表Users,用到了仓库基本信息表Storage,仓库库存信息表Repertory,然后本小组分工实现了用户登录、采购管理、提货管理、入库管理、出库管理。本人实现的:(企业仓库管理系统设计—提货管理及用户登录模块)1.未注册的客户先进行注册,注册后登录,注册的客户可直接登录系统。2.当客户提出提货请求时,产生一个提货单3.首先根据数据库客户信息表审核提货单中客户是否存在。4.若客户存在,则审核货物,查看货物数量是否充足。5.审核成功后进行货物出库登记,登记的内容有货物号、客户号、货物数量、日期。在OutS表中插入登记的此条出库记录。2.需求分析现要开发企业仓库管理系统。经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应能完成下面的功能:(1)用户的注册,登录。(2)货物采购管理(3)仓库入库管理。(4)仓库提货管理。(5)仓库出库管理。~~~ ~~2.1、数据流图:图2.1企业仓库管理系统顶层数据流图~~~ ~~图2.2企业仓库管理系统0层数据流图图2.3用户登录注册数据流图~~~ ~~图2.4仓库提货管理数据流图2.2、数据字典2.2.1数据项表2.1数据项表数据项名称含义说明类型长度货物号唯一标识一个货物字符型20货物名货物的名称字符型20货物数量货物的总数量整型货物价格货物的价钱整型供应商号唯一标识一个供应商字符型20供应商名供应商的名字字符型20客户号唯一标识一个客户字符型20客户密码客户的密码字符型20仓库号唯一标识仓库信息字符型20仓库总容量仓库的总容量信息整型仓库剩余容量仓库剩余容量整型出库编号用于记录货物出库字符型20出库日期用于记录货物何时出库字符型20管理员账号唯一标示管理员信息字符型20管理员密码管理员管理员的密码字符型20~~~ ~~2.2.2数据结构(1)名称:客户含义说明:定义了一个客户有关的信息组成结构:客户号+客户密码 (2)名称:货物含义说明:定义了一个货物有关的信息  组成结构:货物号+货物名+货物价格+货物型号+货物类别(3)名称:仓库含义说明:定义了一个仓库的有关信息组成结构:仓库号+仓库总容量+仓库剩余容量2.2.3数据流(1)数据流名称:入库单含义:客户入库时需要填写的信息来源:客户去向:审核客户数据流量:50份/天组成:客户号+货物名+货物数量(2)数据流名称:出库单含义:客户出库时需要填写的信息来源:客户去向:审核客户数据流量:50份/天组成:客户号+货物名+货物数量(3)数据流名称:提货单含义:客户提货时需要填写的信息来源:客户去向:审核客户数据流量:50份/天组成:客户号+货物号+货物数量(4)数据流名称:违规单含义:如果无法提出所需货物,会给出一个反馈来源:系统管理员~~~ ~~去向:反馈给客户数据流量:50份/天组成:无法提货原因2.2.4数据存储(1)数据存储名称:管理员信息表含义说明:存放管理员的注册信息组成结构:管理员账号+管理员密码说明:用来存储管理员信息,管理员账号号是管理员的主属性(2)数据存储名称:客户信息表含义说明:存放客户的注册信息组成结构:客户号+客户密码说明:用来存储客户信息,客户号是客户的主属性(3)数据存储名称:货物信息表含义说明:存放货物的注册信息组成结构:货物号+货物名+货物价格说明:货物号为其主属性,货物价格为当前该货物的入库价格(4)数据存储名称:仓库信息表含义说明:存放仓库的相关信息组成结构:仓库号+仓库总容量+仓库剩余容量说明:仓库号为其主码,要求能根据审核仓库的剩余容量查询货物的存放与否。(5)数据存储名称:出库信息表含义说明:存放货物出库信息组成结构:出库编号+货物号+客户号+货物数量+货物价格+仓库号+出库日期说明:出库编号为其主码(6)数据存储名称:仓库库存信息表含义说明:用来存储当前仓库存储信息组成结构:仓库号+货物号+客户号+货物数量说明:仓库号,货物号,客户号是其主码,货物数量为当前仓库中该客户的该货物的数量。(7)数据存储名称:提货单信息表含义说明:存放客户提货时所需的提货单~~~ ~~组成结构:客户号+货物号+货物量说明:仓库号,货物号,客户号是其主码,货物数量为当前仓库中该客户的该货物的数量。2.2.5处理过程处理过程名称输入输出加工逻辑货物入库入库单核对正确后的入库信息表将货物按照入库单清点正确后,审核通过,否则不通过货物出货出货单核对正确后的出库信息表将货物按照出库单清点正确后,审核通过,否则不通过订货单订货单核对正确后的订货单按照客户的订货情况进行核对发货单发货单核对正确后的发货单按照客户的订货情况进行核对然后发货3.数据库概念结构设计3.1、标识仓库管理系统中的实体和属性参照数据字典中对数据存储的描述,可初步确定实体和属性为:管理员{管理员账号,管理员密码}货物{货物号,货物名,货物价格,货物型号,货物类别}客户{客户号,客户密码}供应商{供应商编号,供应商名}仓库{仓库号,仓库的总容量,仓库的剩余容量}入库信息{入库编号,货物号,客户号,货物数量,仓库号,入库日期}出库信息{货物号,客户号,货物数量,出库日期}仓库存信息{仓库号,货物号,客户号,货物数量}提货单信息{货物号,客户号,货物数量}其中有下划线的属性为实体的码。~~~ ~~3.2、确定实体间的联系图3.1企业仓库管理系统总E-R图图3.2仓库提货管理E-R图~~~ ~~4.数据库逻辑结构设计4.1、关系模型表4.1关系模式表将在概念结构阶段得到的基本E-R图转换成关系模型,如下表所示:关系名属性及码其他约束条件货物货物号,货物名,货物价格货物号为主码货物名不允许为空客户客户号,客户密码客户号为主码客户密码不允许为空仓库仓库号,总容量,剩余容量仓库号为主码总容量、剩余容量不允许为空入库信息入库编号,货物号,客户号,货物数量,仓库号,入库日期入库编号为主码货物号,客户号不允许为空出库信息货物号,客户号,货物数量,出库日期货物号,客户号为主码,并且为外码。货物号,客户号不允许为空仓库库存信息仓库号,货物号,客户号,货物数量量仓库号,货物号,客户号为主码,并且为外码。货物号,客户号不允许为空管理员信息管理员账号,管理员密码管理员账号为主码密码不允许为空4.2、表与视图的设计表4.2Users(客户表)字段名字段含义字段类型长度小数是否为空列级约束Uid客户号VARCHAR20NOTNULLPrimarykeyUpassword客户密码VARCHAR20NOTNULLNOTNULL函数依赖有:Uid→Upassword~~~ ~~可以看出非主属性Upassword完全函数依赖于Uid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以Users属于3NF甚至于更高的级别。表4.3Goods(货物表)字段名字段含义字段类型长度小数是否为空列级约束Gid货物号VARCHAR20NOTNULLPrimarykeyGname货物名VARCHAR20NOTNULLNOTNULLGprice货物价格INTNOTNULLNOTNULLGmodel货物型号VARCHAR20NOTNULLNOTNULLGsort货物类别VARCHAR20NOTNULLNOTNULL函数依赖有:Gid→Gname,Gid→Gprice,Gid→Gmodel,Gid→Gsort可以看出非主属性Gname,Gprice,Gmodel,Gsort完全函数依赖于Gid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以Users属于3NF甚至于更高的级别。表4.4Storage(仓库信息表)字段名字段含义字段类型长度小数是否为空列级约束Sid仓库号VARCHAR20NOTNULLPrimarykeySstocks仓库总容量INTNOTNULLNOTNULLSsstock剩余容量INTNOTNULLNOTNULL函数依赖有:Sid→Sstocks,Sid→Ssstock可以看出非主属性Sstocks、Ssstock完全函数依赖于Sid,并且Storage表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Storage属于3NF。表4.5Lading(提货单信息表)字段名字段含义字段类型长度小数是否为空列级约束Uid客户号VARCHAR20NOTNULLForeignkeyreferencesUsers(Uid)Gid货物号VARCHAR20NOTNULLForeignkeyreferencesGoods(Gid)~~~ ~~Lnumber提货数量INTNULL函数依赖有:(Uid,Gid)→Lnumber可以看出非主属性Lnumber完全函数依赖于(Uid,Gid),并且Lading表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Lading属于3NF。表4.6OutS(出库信息表)字段名字段含义字段类型长度小数是否为空列级约束Gid货物号VARCHAR20NOTNULLForeignkeyreferencesGoods(Gid)Uid客户号VARCHAR20NOTNULLForeignkeyreferencesUsers(Uid)Gnumber货物数量INTNULLMODIFYDATE出货日期datatimeNULL表级约束Primarykey(Gid,Uid)函数依赖有:(Gid,Uid)→Gnumber,MODIFYDATE非主属性Gnumber,MODIFYDATE完全函数依赖于(Gid,Uid),且不存在传递函数依赖,即属于3NF。表4.7Repertory(仓库库存信息表)字段名字段含义字段类型长度小数是否为空列级约束Sid仓库号VARCHAR10NOTNULLForeignkeyreferencesStorate(sid)Gid货物号VARCHAR20NOTNULLForeignkeyreferencesCargo(gid)Gnumber货物数量INTNULL表级约束Primarykey(Sid,Gid)函数依赖有:(Sid,Gid)→Gnumber可以看出非主属性Gnumber对(Sid,Gid)是完全函数依赖,并且不存在传递依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Repertory属于3NF。~~~ ~~5.数据库物理设计及实施5.1创建数据库createdatabase企业仓库系统;5.2创建表创建Users表:createtableUsers(Uidvarchar(20)notnullprimarykey,Upasswordvarchar(20)notnull);~~~ ~~创建Goods表:createtableGoods(Gidvarchar(20)notnullprimarykey,Gnamevarchar(20)notnull,Gpriceintnotnull,Gmodelvarchar(20)notnull,Gsortvarchar(20)notnull);创建Storage表:createtableStorage(Sidvarchar(20)notnullprimarykey,Sstocksintnotnull,Ssstockintnotnull);~~~ ~~创建Lading表:createtableLading(Lidvarchar(20)primarykey,Uidvarchar(20),Gidvarchar(20),Lnumberint);创建Reterpory表:createtableReterpory(Sidvarchar(20)notnull,Gidvarchar(20)notnull,Gnumberintnotnull,primarykey(Sid,Gid),foreignkey(Sid)referencesStorage(Sid),foreignkey(Gid)referencesGoods(Gid),);创建OutS表:createtableOutS(Gidvarchar(20),Uidvarchar(20),Gnumberint,MODIFYDATEdatetime,~~~ ~~foreignkey(Gid)referencesgoods(Gid),foreignkey(Uid)referencesusers(Uid));向Users表中插入数据:insertintoUsers(Uid,Upassword)values("U1","aaa");insertintoUsers(Uid,Upassword)values("U2","bbb");insertintoUsers(Uid,Upassword)values("U3","ccc");insertintoUsers(Uid,Upassword)values("U4","ddd");insertintoUsers(Uid,Upassword)values("U5","eee");insertintoUsers(Uid,Upassword)values("U6","fff");insertintoUsers(Uid,Upassword)values("U7","ggg");insertintoUsers(Uid,Upassword)values("U8","hhh");insertintoUsers(Uid,Upassword)values("U9","jjj");insertintoUsers(Uid,Upassword)values("U10","kkk");select*fromUsers;向Goods表中插入数据:~~~ ~~insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G1","a",20,"A","一级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G2","b",10,"B","二级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G3","c",50,"C","一级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G4","d",70,"D","三级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G5","e",20,"E","二级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G6","f",100,"F","一级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G7","g",140,"G","三级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G8","h",60,"H","一级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G9","i",80,"I","二级");insertintoGoods(Gid,Gname,Gprice,Gmodel,Gsort)values("G10","j",90,"J","一级");select*fromGoods;向Reterpory表中插入数据:insertintoReterporyvalues("S1","G1",600);insertintoReterporyvalues("S2","G2",800);insertintoReterporyvalues("S3","G3",1000);insertintoReterporyvalues("S4","G4",900);insertintoReterporyvalues("S5","G6",800);insertintoReterporyvalues("S6","G7",700);insertintoReterporyvalues("S7","G8",600);insertintoReterporyvalues("S8","G5",950);insertintoReterporyvalues("S9","G10",500);insertintoReterporyvalues("S10","G9",1100);select*fromReterpory;~~~ ~~6.功能实现6.1用户注册登录功能模块1.用户注册时,输出客户号和密码,如果客户号不存在则注册成功,若客户号已存在则用户存在,不能注册。--用户注册存储过程createprocedureinsertUsers(@uidvarchar(20),@upasswordvarchar(20),@returnnamevarchar(20)output)asifexists(selectUidfromUserswhereUid=@uid)beginset@returnname="用户存在"endelsebegininsertintoUsersvalues(@uid,@upassword)set@returnname="注册成功"endgo~~~ ~~2.用户登录时,输出客户号和密码,与数据库中客户表匹配数据,如果客户号和密码都相同则登录成功,否则登录失败。--用户登录存储过程createprocedureloginUsers(@uidvarchar(20),@upasswordvarchar(20),@returnnamevarchar(20)output)asifexists(selectUid,Upassword--判断登录信息是否正确fromUserswhereUid=@uidandUpassword=@upassword)beginset@returnname="登陆成功"endelsebeginset@returnname="登录失败"endgo~~~ ~~6.2仓库提货功能模块1.当客户提出提货请求时,产生一个提货单。(运用insert语句将提货单信息插入到提货信息表Lading)insertintoLadingvalues("L1","U1","G1",500);insertintoLadingvalues("L2","U3","G9",1000);insertintoLadingvalues("L3","U8","G7",800);insertintoLadingvalues("L4","U19","G11",600);2.首先根据数据库客户信息表审核提货单中客户是否存在。(通过建立一个视图Lading_Uid显示存在的客户及信息)createviewLading_Uid~~~ ~~asselectUsers.Uid,Uname,Lading.Gid,Lading.LnumberfromUsers,LadingwhereUsers.Uid=Lading.Uid;select*fromLading_Uid;1.若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。(通过建立一个视图Lading_Gnumber显示货物数量充足的货物号及信息)createviewLading_GnumberasselectLading_Uid.Uid,Uname,Lading_Uid.Gid,Lading_Uid.LnumberfromLading_Uid,ReterporywhereLading_Uid.Gid=Reterpory.GidandLading_Uid.Lnumber<=Reterpory.Gnumber;select*fromLading_Gnumber;2.审核成功后进行货物出库登记,登记的内容有货物号、客户号、货物数量、日期。在OutS表中插入登记的此条出库记录。(编写一个触发器Lading_outs,实现在提货单信息表Lading插入数据时,自动审核客户号和货物数量,审核完在OutS表中插入登记的此条出库记录)createtriggerLading_outsonLading~~~ ~~afterinsertasbegininsertintooutS(Gid,Uid,Gnumber,MODIFYDATE)selectLading_Gnumber.Gid,Lading_Gnumber.Uid,Lading_Gnumber.Lnumber,getdate()asMODIFYDATEfromLading_Gnumber;deletefromLading;select*fromOutS;end;~~~ ~~7.总结这次课程设计我们组完成了企业仓库管理系统的设计,我完成了其中的提货管理和用户登录模块,从需求分析到概念结构设计,再到逻辑结构设计,最后到数据库物理设计及实施,亲自参与整个数据库的设计过程。在建表之前,我们组一起讨论了要建几个表的问题,为了减少冗余,我们将提货单信息表和出库信息表分别建表。在建立功能过程中,对触发器和存储过程理解不深刻,通过看书和上网查询完善了触发器和存储过程。通过此次课程设计,掌握了表与视图的建立,也学会了触发器与存储过程的建立,提高了自己写代码的能力,深刻的体会了数据库的应用方法和设计理念,更加深刻的体会了数据库的实际应用,也对很多概念用法有了更进一步的理解。同时学会了遇到困难要有吃苦耐劳的精神,同时认识到了团队合作的重要性。~~~ ~~参考文献[1]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2006.[2]甘仞初..管理信息系统[M].北京:机械工业出版社,2002.[3]李昆,SQLSERVER2000课程设计案例精编,北京:中国水利水电出版社,2006[4]钱雪忠.数据库原理及应用[M]北京:邮电大学出版社,2007.[5]仝春灵,数据库原理与应用—SQLServer2000,北京:电子工业出版社,2007[6]辛赫(Singh.S.K)、何玉洁等.数据库系统概念、设计及应用[M]北京:机械工业出版社,2008[7]周成兴.SQL与关系数据库理论[M]北京:清华大学出版社,2010~~~