1、使用软件
sql server
2、需求分析
2.1背景介绍
仓库的管理模型是用来管理供应商、仓库及货物等,其中的货物进货和仓库管理非常复杂,需要耗费大量的人力物力对这些数据进行统计和处理。因此我们设计仓库管理模型数据库系统的目的是更好的高效的管理仓库中存放的货物、有利于保护公司的所有物、节约成本和时间,另外数据库系统条理清楚层次分明、可以做到数量充足和准确、质量完好、确保安全
这是一项相当大的工程。尤其在当商品种类繁多的情况下,传统的人工管理方式存在基本资料保存与维护困难,管理者需要加强成本管理和收入管理,通过提高服务水平来提升企业形象。他们对仓库管理程序进行了详细的分析和策划,提出了利用计算机管理信息系统对仓库进行管理,从而进行仓库管理系统的开发,以适应今天高速运转的全球经济化的竞争。
为此我们做如下需求:
(1)拥有足够大空间的仓库,每天都有货物存货和出仓。
(2)每种货物都有编号、名称、规格等信息,方便登记。
(3)存货出仓时必须填写出存货信息,其中包括商品名称、生产厂家、规格、数量、日期、存货单位(提货单位)名称、提货人姓名。
(4)实现按货物名称、出入库日期的查询。
(5)实现具体日期对出入库商品数量的统计。
2.2数据流程图和数据字典
在研究仓库模型的基础上,为了更清楚的表示仓库管理系统的流程,我们以存货这个过程为例,创建了流程图,如图1:
图1 存货流程图
设计的数据字典如下
名称 |
货物信息 |
编号 |
F1 |
说明 |
每个货物都有唯一的编号 | ||
数据结构 |
货物编号+货物名称+货物类型+货物大小+货物价格 |
名称 |
仓库信息 |
编号 |
F2 |
说明 |
仓库管理时登记仓库信息 | ||
数据结构 |
仓库名称+仓库编号+仓库地址 |
名称 |
存货信息 |
编号 |
F3 |
说明 |
登记存货信息 | ||
数据结构 |
存货日期+存货数量+对应供应商编号 |
名称 |
出仓信息 |
编号 |
F4 |
说明 |
登记出仓信息 | ||
数据结构 |
出仓日期+出仓数量+存仓对应编号 |
名称 |
生产厂家 |
编号 |
F5 |
说明 |
别名供应商,登记厂家信息 | ||
数据结构 |
厂家编号+厂家姓名 |
名称 |
提货人信息 |
编号 |
F6 |
说明 |
出仓货物的去向,登记提货人信息 | ||
数据结构 |
提货人编号+提货人姓名 |
2.3功能结构图
3、概念设计
(1)概念模型(E-R图):
本实例根据上面的设计规划出的实体有:商品、仓库。根据系统需求分析,可以得出仓库库存物资管理系统数据库的概念模型,之后对设计出的数据模型进行规范化处理,使数据模型满足第三范式。仓库库存物资管理系统各个实体之间分级 E-R 图及总体E-R图如下图所示。
图3 员工实体图
图4 仓库实体图
图5 仓库库存物资管理系统总体E-R图
4、逻辑结构设计
在进行数据库逻辑结构设计时,将仓库物资管理管理系统的E-R图转换为关系数据库的数据模型,可以得到其关系模式为:
1)货物(货物编号,规格,型号,商品名称,生产厂家姓名),其中“货物编号”为主码。
2)仓库(仓库号,仓库名称),其中“仓库号”为主码。
3)库存(商品编号,仓库号,库存数量),其中“商品编号”和“仓库号”为主码,“商品编号”和“仓库号”为外码。
4)存货(存货号,存货日期,送货人姓名,存货数,货物编号,仓库号),其中“存货号”为主码,“仓库号”和“货物编号”为外码。
5)出仓(出仓号,提货人姓名,出仓日期,出仓数量,货物编号,仓库号),其中“出仓号”为主码,“仓库号”和“货物编号”为外码。
经过检查,此数据库的关系模式满足第三范式的要求。在上文的关系模式的基础上,根据仓库物资管理系统的E-R图设计出数据表结构,仓库物资管理系统数据库中各个表格的属性设计结果如下表所示。
表1 商品表(goods)
列名 |
数据类型 |
长度 |
可否为空 |
说明 |
g_num |
Char |
10 |
Not Null |
货物编号(primary key) |
g_name |
Varchar |
50 |
Not Null |
商品名称 |
g_fac |
Varchar |
50 |
Not Null |
生产厂家 |
g_type |
Varchar |
20 |
Not Null |
型号 |
g_norms |
Varchar |
20 |
Not Null |
规格 |
表2 仓库表(storage)
列名 |
数据类型 |
长度 |
可否为空 |
说明 |
sNo |
Char |
10 |
Not Null |
仓库号(primary key) |
Sname |
Varchar |
50 |
Not Null |
仓库名称 |
表3 库存表(reserve)
列名 |
数据类型 |
长度 |
可否为空 |
说明 |
g_num |
Char |
10 |
Not Null |
商品编号 (primary key/foreign key) #参照货物表 |
sNo |
Char |
50 |
Not Null |
货物名称 (primary key/foreign key) #参照仓库表 |
ramount |
int |
|
Not Null |
库存数量 |
表4 存货表(stocking)
列名 |
数据类型 |
长度 |
可否为空 |
说明 |
s_num |
Char |
10 |
Not Null |
存货号(primary key) |
g_num |
Char |
10 |
Not Null |
货物编号 (foreign key,货物表) |
sNo |
Char |
10 |
Not Null |
仓库号 (foreign key,仓库表) |
samount |
Int |
|
Not Null |
存货数量 |
sdate |
smalldateti me |
|
Not Null |
存货日期 |
supplier |
Varchar |
50 |
Not Null |
送货人姓名 |
表5 出仓表(outbound)
列名 |
数据类型 |
长度 |
可否为空 |
说明 |
o_num |
Char |
10 |
Not Null |
出仓号(primary key) |
g_num |
Char |
10 |
Not Null |
货物编号 (foreign key,货物表) |
sNo |
Char |
10 |
Not Null |
仓库号 (foreign key,仓库表) |
oamount |
Int |
|
Not Null |
出仓数量 |
odate
|
Smalldateti me |
|
Not Null
|
出仓日期
|
buyers |
Varchar |
50 |
Not Null |
提货人姓名 |
5、物理设计和实施
1.创建数据库
主文件逻辑文件名为warehouse,初始容量20MB,最大容量500MB,允许按5%比例增长;其日志文件逻辑文件名为warehouse_LOG,初始容量20MB,最大容量100MB,允许按5%比例增长。
create database warehouse
on
(name = warehouse,
filename='D:\SHIYAN\ warehouse.mdf',
size=20MB,
maxsize=500MB,
filegrowth=5%)
log on
(name =warehouse_LOG,
filename='D:\SHIYAN \ warehouse_LOG.LDF',
size=20MB,
maxsize=100MB,
filegrowth=5%)
2. 创建表
1. 创建商品表:
use warehouse
create table goods
(g_num char(10) not null primary key,
g_name varchar(50) not null,
g_fac varchar(50) not null,
g_type varchar(20) not null,
g_norms varchar(20) not null,
);
2. 创建仓库表:
use warehouse
create table storage
(sno char(10) not null primary key,
sname varchar(50) not null
);
3. 创建库存表
use warehouse
create table reserve
(g_num char(10) not null primary key,
sno char(10) not null,
ramount int not null,
foreign key(sno)references storage(sno),
foreign key(g_num)references goods(g_num)
);
4. 创建存货表:
use warehouse
create table stocking
(s_num char(10) not null primary key,
g_num char(10) not null,
sno char(10) not null,
samount int not null,
sdate smalldatetime not null,
supplier varchar(50) not null,
foreign key(sno)references storage(sno),
foreign key(g_num)references goods(g_num)
);
5. 创建出仓表:
use warehouse
create table outbound
(o_num char(10) not null primary key,
g_num char(10) not null,
sno char(10) not null,
oamount int not null,
odate smalldatetime not null,
buyers varchar(50) not null,
foreign key(sno)references storage(sno),
foreign key(g_num)references goods(g_num)
);
6. 插入商品表的数据:
use warehouse
insert
into goods
values ('100000','衣服','小心怕怕','aaa','a1');
insert
into goods
values ('100001','裤子','柚子美衣','bbb','a2');
insert
into goods
values ('100002','鞋子','美人记','ccc','a3');
insert
into goods
values ('100003','袜子','淘宝屋','ddd','a4');
insert
into goods
values ('100004','帽子','衣衣不舍','eee','a5');
7. 插入仓库表的数据:
use warehouse
insert
into storage
values ('00001','A');
insert
into storage
values ('00002','B');
8. 插入库存表的数据:
use warehouse
insert
into reserve
values ('100000','00001','3');
insert
into reserve
values ('100001','00001','2');
insert
into reserve
values ('100002','00001','6');
insert
into reserve
values ('100003','00002','3');
insert
into reserve
values ('100004','00001','6');
9. 插入存货表的数据:
use warehouse
insert
into stocking
values ('001','10000', '00002','50','2013-10-27','小林');
insert
into stocking
values ('002','10001','00002','50','2013-12-12','冰冰');
insert
into stocking
values ('003','10003','00001','50','2013-1-23','小王');
insert
into stocking
values ('004','10004','00001','50','2012-2-11','小王');
insert
into stocking
values ('005','10002','00001','50','2009-3-5','冰冰');
insert
into stocking
values ('006','10002','00002','50','2010-5-6','小林');
insert
into stocking
values ('007','10001','00001','50','2011-12-12','小王');
insert
into stocking
values ('008','10003','00002','50','2010-11-11','小王');
10. 插入出仓表的数据:
use warehouse
insert
into outbound
values ('11','10000','00001','10','2011-3-5','小王');
insert
into outbound
values ('12','10001','00002','20','2013-9-2','冰冰');
insert
into outbound
values ('13','10002','00001','15','2009-12-28','小王');
11. 查询商品入库情况:
use warehouse
select *from goods
where g_name='衣服';
use warehouse
select s_num,g_num,sno,samount,sdate,supplier
From stocking
where sdate='2013-12-12 00:00:00' and g_num=stocking.g_num and sno=stocking.sno;
12. 查询商品出库情况:
use warehouse
select o_num,g_num,sno,oamount,odate,buyers
from outbound
where sno='00001';
13. 为stocking数据表中的supplier创建索引:
use warehouse
go
create index IX_supplier on stocking(supplier)
Go
14. 为outbound表中的buyers创建索引:
use warehouse
go
create index IX_buyers on outbound(buyers)
Go
15. 创建存货表信息视图 view_stocking,显示供货人等信息:
use warehouse
go
create view view_stocking
as
select supplier,sno,sdate
from stocking
go
select * from view_stocking
Go
Comments NOTHING