企业仓库管理系统数据库设计.docx
- 文档编号:23430288
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:29
- 大小:363.69KB
企业仓库管理系统数据库设计.docx
《企业仓库管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《企业仓库管理系统数据库设计.docx(29页珍藏版)》请在冰豆网上搜索。
企业仓库管理系统数据库设计
山东建筑大学计算机科学及技术学院
课程设计说明书
题目:
企业仓库管理系统设计-提货
管理及用户登录模块
课程:
数据库原理及应用课程设计
院(部):
计算机学院
山东建筑大学计算机科学及技术学院
课程设计任务书
设计题目
企业仓库管理系统设计-提货管理及用户登录模块
已知技术参数和设计要求
为了满足公司仓库管理的业务需求,先需要开发企业仓库管理系统。
该系统对货物进行入库和出库管理。
该系统的管理员为仓库管理员,同时他也是系统管理员。
我实现的功能模块:
用户登录管理、提货管理。
具体描述如下:
(1)用户登录注册管理。
①用户注册。
用户注册时,输出客户号和密码,如果客户号不存在则注册成功,若客户号已存在则用户存在,不能注册。
②用户登录。
用户登录时,输出客户号和密码,及数据库中客户表匹配数据,如果客户号和密码都相同则登录成功,否则登录失败。
(2)提货管理。
①申请提货登记。
包括:
货物号,客户号,货物数量。
②审核提货单。
首先根据数据库客户信息表审核提货单中客户是否存在,若客户存在,然后根据数据库仓库库存信息审核客户所需货物数量是否充足。
③货物出库登记:
包括:
货物号,客户号,货物数量,出库日期。
设计内容及步骤
1、需求分析
2、数据库设计
3、用SQL语句、触发器及存储过程等实现功能
4、课程设计说明书
设计工作计划及进度安排
1、设计工作6学时
2、实现4学时
3、课程设计说明书2学时
设计考核要求
1、考勤20%
2、课程设计说明书50%
3、答辩30%
指导教师(签字):
教研室主任(签字):
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
客户号
VARCHAR
20
NOTNULL
Primarykey
Upassword
客户密码
VARCHAR
20
NOTNULL
NOTNULL
函数依赖有:
Uid→Upassword
可以看出非主属性Upassword完全函数依赖于Uid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以Users属于3NF甚至于更高的级别。
表4.3Goods(货物表)
字段名
字段含义
字段类型
长度
小数
是否为空
列级约束
Gid
货物号
VARCHAR
20
NOTNULL
Primarykey
Gname
货物名
VARCHAR
20
NOTNULL
NOTNULL
Gprice
货物价格
INT
NOTNULL
NOTNULL
Gmodel
货物型号
VARCHAR
20
NOTNULL
NOTNULL
Gsort
货物类别
VARCHAR
20
NOTNULL
NOTNULL
函数依赖有:
Gid→Gname,Gid→Gprice,Gid→Gmodel,Gid→Gsort
可以看出非主属性Gname,Gprice,Gmodel,Gsort完全函数依赖于Gid,并且此表绝不会存在传递函数依赖和部分函数依赖问题,所以Users属于3NF甚至于更高的级别。
表4.4Storage(仓库信息表)
字段名
字段含义
字段类型
长度
小数
是否为空
列级约束
Sid
仓库号
VARCHAR
20
NOTNULL
Primarykey
Sstocks
仓库总容量
INT
NOTNULL
NOTNULL
Ssstock
剩余容量
INT
NOTNULL
NOTNULL
函数依赖有:
Sid→Sstocks,Sid→Ssstock
可以看出非主属性Sstocks、Ssstock完全函数依赖于Sid,并且Storage表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Storage属于3NF。
表4.5Lading(提货单信息表)
字段名
字段含义
字段类型
长度
小数
是否为空
列级约束
Uid
客户号
VARCHAR
20
NOTNULL
ForeignkeyreferencesUsers(Uid)
Gid
货物号
VARCHAR
20
NOTNULL
ForeignkeyreferencesGoods(Gid)
Lnumber
提货数量
INT
NULL
函数依赖有:
(Uid,Gid)→Lnumber
可以看出非主属性Lnumber完全函数依赖于(Uid,Gid),并且Lading表中没有传递函数依赖,即每一个非主属性既不部分依赖于码也不传递依赖于码,所以Lading属于3NF。
表4.6OutS(出库信息表)
字段名
字段含义
字段类型
长度
小数
是否为空
列级约束
Gid
货物号
VARCHAR
20
NOTNULL
ForeignkeyreferencesGoods(Gid)
Uid
客户号
VARCHAR
20
NOTNULL
ForeignkeyreferencesUsers(Uid)
Gnumber
货物数量
INT
NULL
MODIFYDATE
出货日期
datatime
NULL
表级约束
Primarykey(Gid,Uid)
函数依赖有:
(Gid,Uid)→Gnumber,MODIFYDATE
非主属性Gnumber,MODIFYDATE完全函数依赖于(Gid,Uid),且不存在传递函数依赖,即属于3NF。
表4.7Repertory(仓库库存信息表)
字段名
字段含义
字段类型
长度
小数
是否为空
列级约束
Sid
仓库号
VARCHAR
10
NOTNULL
ForeignkeyreferencesStorate(sid)
Gid
货物号
VARCHAR
20
NOTNULL
ForeignkeyreferencesCargo(gid)
Gnumber
货物数量
INT
NULL
表级约束
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
)
as
ifexists(selectUidfromUserswhereUid=@uid)
begin
set@returnname='用户存在'
end
else
begin
insertintoUsersvalues(@uid,@upassword)
set@returnname='注册成功'
end
go
2.用户登录时,输出客户号和密码,及数据库中客户表匹配数据,如果客户号和密码都相同则登录成功,否则登录失败。
--用户登录存储过程
createprocedureloginUsers
(
@uidvarchar(20),
@upasswordvarchar(20),
@returnnamevarchar(20)output
)
as
ifexists(selectUid,Upassword--判断登录信息是否正确
fromUsers
whereUid=@uidandUpassword=@upassword)
begin
set@returnname='登陆成功'
end
else
begin
set@returnname='登录失败'
end
go
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
as
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业 仓库 管理 系统 数据库 设计