物流管理系统的SQL数据库设计说明.docx
《物流管理系统的SQL数据库设计说明.docx》由会员分享,可在线阅读,更多相关《物流管理系统的SQL数据库设计说明.docx(46页珍藏版)》请在冰豆网上搜索。
物流管理系统的SQL数据库设计说明
物流管理信息系统的数据库设计
班级
xxx
系统名称:
物流管理信息系统
一、需求分析
物流管理系统是为制造商和零售商设计的管理系统数据库系统,目的是:
1、实现上游制造商的信息管理。
2、实现下游零售商的信息管理。
3、实现进库与配送的信息管理。
从而提高物流效率,降低物流成本并提高企业管理化水平。
经过调研分析,得到系统的如下功能需求。
(1)数据检索
1、制造商、零售商查询某一产品名称,规格和单位
输入:
产品编号
输出:
产品名称,产品规格,产品单位,制造商编号
2、物流中心、制造商查询某一零售商名称,联系人,地址,,网址
输入:
零售商编号
输出:
零售商名称,联系人,地址,,网址
3、零售商、物流中心查询某一制造商信息表
输入:
制造商编号
输出:
制造商名称,联系人,地址,,网址
4、物流中心、制造商、零售商查询某一产品的出库信息表
输入:
仓库编号
输出:
仓库编号,库名,地址,
5、物流中心、零售商查询某一产品的制造商和产品信息表
输入:
产品编号编号
输出:
制造商名称,联系人,地址,,,产品名称,产品名称,产品规格,产品单位
6、查询某一产品对应的物流中心编号与产品信息
输入:
产品编号
输出:
物流中心编号,货物价格,提取.产品编号,产品.产品名称,产品名称,产品规格,产品单位
7、制造商,零售商查询某一物流中心信息
输入:
物流中心编号
输出:
物理中心名称,联系人,地址,,网址
(2)数据插入
①产品数据插入
②制造商数据插入
③零售商数据插入
④物流中心数据插入
(3)数据修改
①产品数据修改:
某产品数据变化时,输入该产品编号以与需修改的属性,完成对产品表的修改
②制造商数据修改:
某制造商数据变化时,输入该制造商编号以与需修改的属性,完成对制造商表的修改
③零售商数据修改:
某零售商数据变化时,输入该零售商编号以与需修改的属性,完成对零售商的修改
④物流中心数据修改:
某物流中心数据变化时,输入该物流中心编号以与需修改的属性,完成对物流中心的修改
二、概念设计
经需求分析,抽象出以下E-R模型
(1)制造商实体
制造商编号
号码
制造商
(2)物流中心实体
号码
物流中心编号
物流中心
(3)零售商实体
零售商编号
号码
零售商
(4)产品实体
单位
名称
(5)仓库实体
库名
(6)全局E-R图
三、逻辑设计
产品(产品编号,产品名称,产品规格,产品单位,制造商编号)
零售商(零售商编号,名称,联系人,地址,,)
制造商(制造商编号,名称,地址,联系人,,)
物流中心(物流中心编号,名称,联系人,地址,,)
仓库(仓库编号,库名,地址,)
存放(产品编号,仓库编号,制造商编号,产品数量,入库时间)
管理(物流中心编号,仓库编号,送货时间,产品单价)
制造(制造商编号,产品编号,产品批次,产品质量)
运输(仓库编号,零售商编号,运输单价)
四、物理设计
根据以上关系模式构建的数据表结构如表所示。
表1产品表结构
字段名
类型
特殊属性
产品编号
Char(10)
PEIMARYKEY
产品名称
Char(20)
NOTNULL
产品规格
Char(10)
产品单位
Char(10)
NOTNULL
制造商编号
Char(10)
FOREIGNKEY
表2零售商结构
字段名
类型
特殊属性
零售商编号
Char(10)
PRIMARYEKY
名称
Char(10)
NOTNULL
联系人
Char(10)
NOTNULL
地址
Varchar(30)
NOTNULL
Int
NOTNULL
Char(20)
表3制造商结构
字段名
类型
特殊属性
制造商编号
Char(10)
PRIMARYEKY
名称
Char(10)
NOTNULL
联系人
Char(10)
NOTNULL
地址
Varchar(30)
NOTNULL
Char(20)
NOTNULL
Char(20)
表4物流中心结构
字段名
类型
特殊属性
物流中心编号
Char(10)
PRIMARYEKY
名称
Char(10)
NOTNULL
联系人
Char(10)
NOTNULL
地址
Varchar(30)
NOTNULL
Char(20)
NOTNULL
Char(10)
字段名
类型
特殊属性
仓库编号
Char(10)
PRIMARYKEY
库名
Char(20)
NOTNULL
地址
Varchar(30)
NOTNULL
Char(20)
NOTNULL
表5仓库表结构
表6存放表结构
字段名
类型
特殊属性
产品编号
Char(10)
PRIMARYKEY,FOREIGNKEY
仓库编号
Char(10)
PRIMARYKEY,FOREIGNKEY
制造商编号
Char(10)
产品数量
Int
入库时间
Char(10)
NOTNULL
表7管理表结构
字段名
类型
特殊属性
物流中心编号
Char(10)
PRIMARYKEY,FOREIGNKEY
仓库编号
Char(10)
PRIMARYKEY,FOREIGNKEY
产品单价
Int
送货日期
Char(10)
表8制造表结构
字段名
类型
特殊属性
制造商编号
Char(10)
PRIMARYKEY,FOREIGNKEY
产品编号
Char(10)
PRIMARYKEY,FOREIGNKEY
产品批次
Char(10)
NOTNULL
产品质量
Int
NOTNULL
表9运输表结构
字段名
类型
特殊属性
零售商编号
Char(10)
PRIMARYKEY,FOREIGNKEY
仓库编号
Char(10)
PRIMARYKEY,FOREIGNKEY
运输单价
Int
NOTNULL
表10提取表结构
字段名
类型
特殊属性
物流中心编号
Char(10)
PRIMARYKEY,FOREIGNKEY
产品编号
Char(10)
PRIMARYKEY,FOREIGNKEY
货物价格
Int
NOTNULL
五、系统实现
1、数据库与其基本表的建立
数据库的建立用企业管理器,基本表的建立用T—SQL语句。
数据库名称:
WL_System
1、创建表
CreatedatabaseWL_System
on
(
name='wl_system_data',
filename=
'C:
\SQLhomework\wl_system_data.mdf',
size=10mb,maxsize=50mb,filegrowth=2mb
)
LOGON
(
name='wl_system_log',
filename='C:
\SQLhomework\wl_system_log.ldf',
size=10mb,
maxsize=50mb,
filegrowth=2mb
)
2、建立基本表结构
USEWL_System
Go
Createtable制造商
(
制造商编号char(10)primarykey,
名称char(10)NOTNULL,
联系人char(10)NOTNULL,
地址varchar(30),
char(20)NOTNULL,
char(20)
)
--droptable制造商
Createtable产品
(
产品编号char(10)primarykey,
产品名称char(20)NOTNULL,
产品规格char(10),
产品单位char(10)NOTNULL,
制造商编号char(10),
Foreignkey(制造商编号)references制造商(制造商编号),
)
Createtable零售商
(
零售商编号char(10)primarykey,
名称char(10)NOTNULL,
联系人char(10)NOTNULL,
地址char(30)NOTNULL,
IntNOTNULL,
char(20)
)
--droptable零售商
Createtable物流中心
(
物流中心编号char(10)primarykey,
名称char(10)NOTNULL,
联系人char(10)NOTNULL,
地址Varchar(30),
char(20)NOTNULL,
char(10)
)
--droptable物流中心
Createtable仓库
(
仓库编号char(10)primarykey,
库名char(20)NOTNULL,
地址varchar(30)NOTNULL,
char(20)NOTNULL
)
--droptable仓库
Createtable存放
(
产品编号char(10),
仓库编号char(10),
制造商编号char(10),
产品数量int,
入库时间char(10)NOTNULL,
primarykey(仓库编号,产品编号),
Foreignkey(仓库编号)references仓库(仓库编号),
Foreignkey(产品编号)references产品(产品编号)
)
--droptable存放
Createtable管理
(
物流中心编号char(10),
仓库编号char(10),
产品单价int,
送货日期char(10),
primarykey(物流中心编号,仓库编号),
Foreignkey(物流中心编号)references物流中心(物流中心编号),
Foreignkey(仓库编号)references仓库(仓库编号)
)
--droptable管理
Createtable制造
(
制造商编号char(10),
产品编号char(10),
产品批次char(10)NOTNULL,
产品质量intNOTNULL,
primarykey(制造商编号,产品编号),
Foreignkey(制造商编号)references制造商(制造商编号),
Foreignkey(产品编号)references产品(产品编号)
)
--droptable制造
Createtable运输
(
零售商编号char(10),
仓库编号char(10),
运输单价intNOTNULL,
primarykey(零售商编号,仓库编号),
Foreignkey(零售商编号)references零售商(零售商编号),
Foreignkey(仓库编号)references仓库(仓库编号)
)
--droptable运输
Createtable提取
(
物流中心编号char(10),
产品编号char(10),
货物价格intNOTNULL,
primarykey(物流中心编号,产品编号),
Foreignkey(物流中心编号)references物流中心(物流中心编号),
Foreignkey(产品编号)references产品(产品编号)
)
--droptable提取
3、输入数据(其余9组输入在最后)
insertinto制造商
values
(
'001','钢笔公司','王女士','tian津','2297369','.kengni.'
)
insertinto零售商
values
(
'003','学五超市','女士','舔大','022110','.kengnitju.'
)
insertinto产品
values
(
'998','钢笔','英雄','根','001'
)
insertinto物流中心
values
(
'009','圆通快递','圆通大爷','舔大','02119','.yt.'
)
insertinto仓库
values
(
'001','南开仓库','南大','120'
)
insertinto存放
values
(
'998','001','002','56','Jul7'
)
insertinto管理
values
(
'009','001','100','Jul_1st'
)
insertinto制造
values
(
'001','998','3','1'
)
insertinto运输
values
(
'003','001','100'
)
4、创建索引
--索引
(1)
Createnonclusteredindex制造商I
on制造商(制造商编号)
Createnonclusteredindex零售商I
on零售商(零售商编号)
(2)
createindex物流中心I
on物流中心(物流中心编号)
createindex库存
on仓库(库名,地址)
5、创建视图
Createviewvw制造商
As
Select名称,联系人,地址,,
from制造商
Createviewvw零售商
As
Select名称,联系人,地址,,
from零售商
6、创建存储过程
--存储过程~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(1)数据检索
1、制造商、零售商查询某一产品名称,规格和单位
输入:
产品编号
输出:
产品名称,产品规格,产品单位,制造商编号
Createprocedure产品_into(Nochar(10)=null)
As
ifNoisnull
begin
print'请输入产品编号'
end
else
begin
Select产品名称,产品规格,产品单位,制造商编号
from产品
whereNo=产品.产品编号
End
execute产品_into'998'
--dropprocedure产品_into
2、物流中心、制造商查询某一零售商名称,联系人,地址,,网址
输入:
零售商编号
输出:
零售商名称,联系人,地址,,网址
Createprocedure零售商_into(Nochar(10)=null)
As
ifNoisnull
begin
print'请输入零售商编号'
end
else
begin
Select名称,联系人,地址,,
from零售商
whereNo=零售商.零售商编号
end
--dropprocedure零售商_into
execute零售商_into'003'
3、零售商、物流中心查询某一制造商信息表
输入:
制造商编号
输出:
制造商名称,联系人,地址,,网址
Createprocedure制造商_into(Nochar(10)=null)
As
ifNoisnull
begin
print'请输入制造商编号'
end
else
begin
Select名称,联系人,地址,,
from制造商
whereNo=制造商.制造商编号
end
--dropprocedure制造商_into
execute制造商_into'002'
4、物流中心、制造商、零售商查询某一产品的出库信息表
输入:
仓库编号
输出:
仓库编号,库名,地址,
Createprocedure仓库_into(Nochar(10)=null)
As
ifNoisnull
begin
print'请输入仓库编号'
end
else
begin
Select仓库编号,库名,地址,
from仓库
whereNo=仓库.仓库编号
end
--dropprocedure仓库_into
execute仓库_into'001'
5、物流中心、零售商查询某一产品的制造商和产品信息表
输入:
产品编号编号
输出:
制造商名称,联系人,地址,,,产品名称,产品名称,产品规格,产品单位
Createprocedure制造商_产品_into(Nochar(10)=null)
As
ifNoisnull
begin
print'输入错误,请提供产品编号,即可获得制造商和产品的信息'
end
else
begin
Select制造商.名称,联系人,地址,,,产品.产品名称,产品名称,产品规格,产品单位
From制造商,产品
where制造商.制造商编号=产品.制造商编号andNo=产品.产品编号
end
execute制造商_产品_into'998'
--哇咔咔咔咔咔^试了这么久终于成功了!
!
!
后面的逗号哭瞎了!
!
两个表真有成就感哈哈~!
--dropprocedure制造商_产品_into
编号与产品信息
输入:
产品编号
6、查询某一产品对应的物流中心
输出:
物流中心编号,货物价格,提取.产品编号,产品.产品名称,产品名称,产品规格,产品单位
Createprocedure提取_产品_into(Nochar(10)=null)
As
ifNoisnull
begin
print'请提供产品编号,即可获得物流和产品的信息'
end
else
begin
Select物流中心编号,货物价格,提取.产品编号,产品.产品名称,产品名称,产品规格,产品单位
from提取innerjoin产品on产品.产品编号=产品.产品编号
whereNo=产品.产品编号
end
execute提取_产品_into'998'
7、制造商,零售商查询某一物流中心信息
输入:
物流中心编号
输出:
物理中心名称,联系人,地址,,网址
Createprocedure物流中心_into(Nochar(10)=null)
As
ifNoisnull
begin
print'请输入物流中心编号'
end
else
begin
Select名称,联系人,地址,,
from物流中心
whereNo=物流中心.物流中心编号
end
--dropprocedure物流中心_into
execute物流中心_into'009'
8、输入产品编号,输出产品信息,物流中心信息,制造商信息
Createprocedure产品_提取_物流中心_制造商_into(Nochar(10)=null)
As
ifNoisnull
begin
print'输入错误,请提供产品编号,即可获得物流和产品的信息'
end
else
begin
Select物流中心.物流中心编号,货物价格,提取.产品编号,产品.产品名称,产品规格,产品单位,制造商.制造商编号,制造商.名称as制造商名称,
物流中心.名称as物流名称,物流中心.as物流
from提取,产品,制造商,物流中心
whereNo=产品.产品编号and提取.产品编号=产品.产品编号
and产品.制造商编号=制造商.制造商编号and物流中心.物流中心编号=提取.物流中心编号
end
--dropprocedure产品_提取_物流中心_制造商_into
exec产品_提取_物流中心_制造商_into'998'
(2)数据插入
插入产品数据
createprocedure产品数据插入
(
产品编号char(10),产品名称char(20),
产品规格char(10),产品单位char(10),制造商编号char(10)
)
as
insertinto产品
values(产品编号,产品名称,产品规格,产品单位,制造商编号)
execute产品数据插入'111','铅笔','中华','支','002'
execute制造商_产品_into'111'
插入制造商、零售商、物流中心数据
createprocedure数据零售商插入
(
零售商编号char(10),联系人char(10),
地址char(10),char(10),网址char(20)
)
as
insertinto产品
values(零售商编号,联系人,地址,,网址)
createprocedure数据制造商插入
(
制造商编号char(10),联系人char(10),
地址char(10),char(10),网址char(20)
)
as
insertinto产品
values(制造商编号,联系人,地址,,网址)
createprocedure数据物流中心插入
(
物流中心编号char(10),联系人char(10),地址char(10),char(10),网址char(20)
)
as
insertinto产品
values(物流中心编号,联系人,地址,,网址)
(3)数据修改
1产品数据修改:
某产品数据变化时,输入该产品编号以与需修改的属性,完成对产品表的修改
createprocedure产品数据修改(产品编号char(10),
产品名称char(20)=产品名称,产品规格char(10)=产品规格,
产品单位char(10)=产品单位,制造商编号char(10)=制造商编号)
as
update产品
set产品名称=产品名称,产品规格=产品规格,产品单位=产品单位,制造商编号=制造商编号
where产品编号=产品编号
execute产品数据修改'998','英雄2','黑笔','支','002'
2制造商数据修改:
某制造商数据变化时,输入该制造商编号以与需修改的属性,完成对制造商表的修改
createprocedure制造商数据修改
(
制造商编号char(10),
联系人char(10)=联系人,地址char(20)=地址,
char(10)=,char(20)=
)
as
update制造商
set制造商编号=制造商编号,联系人=联系人,地址=地址,=,=
where制造商编号=制造商编号
3零售商数据修改:
某零售商数据变化时,输入该零售商编号以与需修改的属性,完成对零售商的修改
createprocedure零售商数据修改
(
零售商编号char(10),
联系人char(10)=联系人,地址char(20)=地址,
c