精品数据库课程设计库存物资管理系统后台数据库.docx
- 文档编号:24232680
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:29
- 大小:89.69KB
精品数据库课程设计库存物资管理系统后台数据库.docx
《精品数据库课程设计库存物资管理系统后台数据库.docx》由会员分享,可在线阅读,更多相关《精品数据库课程设计库存物资管理系统后台数据库.docx(29页珍藏版)》请在冰豆网上搜索。
精品数据库课程设计库存物资管理系统后台数据库
大型数据库课程设计
设计报告
题目:
库存物资管理系统后台数据库
学号:
学生姓名:
指导教师:
提交时间:
2013-11-22
库存物资管理系统后台数据库
第1章进行需求分析,编写数据字典
1.1系统功能要求设计:
(1)数据表以及数据量
1)有一个存放商品的仓库,每天都有商品出库和入库。
2)商品有1000多种,每种商品都有名称、生产厂家、型号、规格等。
3)出入库时必须填写出入库单据,单据包括商品名称、生产厂家、型号、规格、数量、日期、时间、入库单位(或出库单位)名称、送货(或提货)人姓名。
(2)设计要求:
1)进行需求分析,编写数据字典。
2)设计E-R图。
3)设计出入库单据的录入。
4)实现按商品名称、出入库日期的查询。
5)实现分别按日、月和年对出入库商品数量的统计。
(3)主要功能:
1)商品管理:
增加商品、修改商品、删除商品、浏览商品
2)库存管理:
通过触发器实现商品的入库,同时完成对库存表的更新
通过触发器实现商品的出库,同时完成对库存表的更新
实现按商品名称查询库存数量、入库数量和出库数量
实现按入库日期查询入库数量、出库数量
实现分别按日、月和年对入库商品数量的统计
实现分别按日、月和年对入库商品数量的统计
1.2模块设计
库存物资管理大体可以分为3大块,如下图所示:
首先是商品入库模块,该模块主要是描述把采购回来的商品,分类别的放置到指定的仓库中去,然后是商品出库模块,该模块主要描述从指定的仓库中拿出商品,最后是商品库存模块,
这个模块主要是记录商品的库存数量。
1.3数据字典
表
商品表
仓库表
库存表
入库表
出库表
商品表
字段名
数据类型
是否可以为空
IsPK
IsFK
商品编号
Char(5)
notnull
yes
no
商品名称
Varchar(50)
notnull
no
no
生产厂家
Varchar(50)
notnull
no
no
型号
Varchar(50)
notnull
no
no
规格
Varchar(20)
notnull
no
no
仓库表
字段名
数据类型
是否可以为空
IsPK
IsFK
仓库号
Char(10)
notnull
yes
no
仓库名称
Varchar(50)
notnull
no
no
库存表
字段名
数据类型
是否可以为空
IsPK
IsFK
商品编号
Char(5)
notnull
yes
yes
仓库号
char(10)
notnull
yes
yes
库存数量
int
notnull
no
no
入库表
字段名
数据类型
是否可以为空
IsPK
IsFK
入库号
Char(10)
notnull
yes
no
商品编号
char(5)
notnull
no
yes
仓库号
Char(10)
notnull
no
yes
入库数量
int
notnull
no
no
入库日期
smalldatetime
notnull
no
no
入库单位名称
Varchar(50)
null
no
no
送货人姓名
varchar(50)
notnull
no
no
性别
char
(2)
null
no
no
出库表
字段名
数据类型
是否可以为空
IsPK
IsFK
出库号
Char(10)
notnull
yes
no
商品编号
char(5)
notnull
no
yes
仓库号
Char(10)
notnull
no
yes
出库数量
int
notnull
no
no
出库日期
smalldatetime
notnull
no
no
出库单位名称
Varchar(50)
null
no
no
提货人姓名
varchar(50)
notnull
no
no
性别
char
(2)
null
no
no
第2章面向对象分析和设计
类和对象设计如下:
商品
商品编号:
char
商品名称:
varchar
生产厂家:
varchar
规格:
varchar
型号:
varchar
添加()
删除()
查询()
修改()
仓库
仓库号:
char
仓库名称:
varchar
添加()
修改()
删除()
查询()
库存
商品编号:
商品
仓库号:
仓库
库存数量:
int
查询()
修改()
添加()
删除()
出库
出库号:
int
仓库号:
仓库
商品编号:
商品
商品名称:
商品
出库数量:
int
出库日期:
smalldatetime
出库单位名称:
单位
送货人姓名:
人
性别:
char
添加()
修改()
删除()
查询()
入库
入库号:
int
仓库号:
仓库
商品编号:
商品
商品名称:
商品
入库数量:
int
入库日期:
smalldatetime
入库单位名称:
单位
送货人姓名:
人
性别:
char
添加()
删除()
查询()
修改()
第3章逻辑结构设计
分E-R图:
库存关系:
nm
入库关系:
nm
出库关系:
nm
总E-R图:
nnn
mmm
3.1类和对象向关系模式转换
关系模式如下:
商品(商品编号,商品名称,生产厂家,型号,规格)
商品编号为主键
仓库(仓库号,仓库名称)
仓库号为主键
库存(商品编号,仓库号,库存数量)
(商品编号,仓库号)为主键,同时也分别为外键
入库(入库号,商品编号,仓库号,入库数量,入库日期,入库时间,入库单位名称,送货人姓名,性别)
(入库号)为主键,(商品编号,仓库号)为外键。
出库(出库号,商品编号,仓库号,出库数量,出库日期,出库时间,出库单位名称,提货人姓名,性别)
(出库号)为主键,(商品编号,仓库号)为外键。
第4章数据库物理结构设计
4.1存取方法设计
对于库存物资管理系统来说,为了提高某些属性(如:
商品编号,仓库号、入库号,入库日期,入库数量等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。
这样在查询某种商品就会大大提高查询速度。
因此,该系统中选择聚簇存取方法。
4.2存储结构设计
库存物资管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设库存物资管理系统。
数据库管理系统采用Microsoft公司推出的SQLServer2005或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。
4.3物理设计
实现该设计的环境为WindowsXPProfessional+MSSQLServer2005或以上版本。
1、创建Material数据库
createdatabaseMaterial
onprimary(
name=Material,
filename='C:
\PrograFiles\MicrosoftSQLServer\MSSQL.2\MSSQL\DATA\Material.mdf',
size=3MB,
maxsize=UNLIMITED,
filegrowth=1MB
)
logon(
name=Material_LOG,
filename='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL.2\MSSQL\DATA\Material_LOG.ldf',
size=1MB,
filegrowth=10%)
2、创建商品表
createtable商品表
(商品编号char(5)notnullprimarykey,
商品名称varchar(50)notnull,
生产厂家varchar(50)notnull,
型号varchar(20)notnull,
规格varchar(20)notnull)
3、创建仓库表
createtable仓库表
(仓库号char(10)notnullprimarykey,
仓库名称varchar(50)notnull,)
4、创建库存表
createtable库存表
(商品编号char(5)notnull,
仓库号char(10)notnull,
库存数量intnotnull,
primarykey(商品编号,仓库号),
foreignkey(商品编号)references商品表(商品编号),
foreignkey(仓库号)references仓库表(仓库号))
5、创建入库表
createtable入库表
(入库号char(10)notnullprimarykey,
商品编号char(5)notnull,
仓库号char(10)notnull,
foreignkey(商品编号)references商品表(商品编号),
foreignkey(仓库号)references仓库表(仓库号),
入库数量intnotnull,
入库日期smalldatetimenotnull,
入库单位名称varchar(50)null,
送货人姓名varchar(10)notnull,
性别char
(2)default('男')check(性别in('男''女'))
6、创建出库表
createtable出库表
(出库号char(10)notnullprimarykey,
商品编号char(5)notnull,
仓库号char(10)notnull,
foreignkey(商品编号)references商品表(商品编号),
foreignkey(仓库号)references仓库表(仓库号),
出库数量intnotnull,
出库日期smalldatetimenotnull,
出库单位名称varchar(50)null,
提货人姓名varchar(10)notnull,
性别char
(2)default('男')check(性别in('男''女'))
第5章数据完整性设计
5.1主键及索引
表名
主键
建立索引
商品表
(商品编号)
createclusteredindex商品表
on商品表(商品编号)
仓库表
(仓库号)
createclusteredindex仓库表
on仓库表(仓库号)
入库表
(入库号)
createclusteredindex入库表
on入库表(入库号)
出库表
(出库号)
createclusteredindex出库表
on出库表(出库号)
5.2完整性约束的说明
1、商品表的商品编号10001~11000之间(便于查询的使用),商品名称不能取空;
该仓库的商品型号统一为DA0001~DA1000格式。
1)USEMaterial/*定义商品表唯一性的约束*/
GO
altertable商品表addunique(商品名称,生产厂家,型号,规格)
2)USEMaterial/*定义型号的完整性约束条件:
商品型号统一为DA0001-DA1000格式*/
GO
altertable商品表
addconstraintCS1check(型号like'[D][A][0-1][0-9][0-9][0-9]')
5.3check约束
在商品表中将型号进行check约束:
check(型号like'[D][A][0-1][0-9][0-9][0-9]')
在入库表和出库表中将性别进行check约束:
check(性别in('男''女'))
5.4Default默认值
在入库表和出库表中性别默认值设为:
男。
default('男')
5.5触发器设计
1、通过触发器实现商品的入库,同时完成对库存表的更新
(1)入库
useMaterial
go
ifexists(select*fromsysobjectswherename='rukuinsert')
dropprocedurerukuinsert
go
createprocedurerukuinsert@rukuhaochar(10),@shangpinbianhaochar(5),@cangkuhaochar(10),@rukushuliangint,@rukuriqismalldatetime,@rukudanweivarchar(50),@songhuorennamevarchar(50),@sexchar
(2)
as
if(exists(select*from入库表where入库号=@rukuhao))
print('该商品已经存在,不能再次插入')
else
begin
insertinto入库表
values(@rukuhao,@shangpinbianhao,@cangkuhao,@rukushuliang,@rukuriqi,@rukudanwei,@songhuorenname,@sex)
print('插入成功')
end
(2)更新
USEMaterial
GO
createtriggerrkb_intoon入库表
afterupdate
as
begin
declare@achar(5),@bchar(10),@dint
select@a=商品编号frominserted
select@b=仓库号frominserted
select@d=入库数量frominserted
update库存表
set库存数量=库存数量+@d
where商品编号=@aand仓库号=@b
End
2、通过触发器实现商品的出库,同时完成对库存表的更新
(1)出库
useMaterial
go
ifexists(select*fromsysobjectswherename='chukuinsert')
dropprocedurechukuinsert
go
createprocedurechukuinsert@chukuhaochar(10),@shangpinbianhaochar(5),@cangkuhaochar(10),@chukushuliangint,@chukuriqismalldatetime,@chukudanweivarchar(50),@tihuorennamevarchar(50),@sexchar
(2)
as
if(exists(select*from出库表where出库号=@chukuhao))
print('该商品已经存在,不能再次插入')
else
begin
insertinto出库表
values(@chukuhao,@shangpinbianhao,@cangkuhao,@chukushuliang,@chukuriqi,@chukudanwei,@tihuorenname,@sex)
print('插入成功')
end
(2)更新
USEMaterial
GO
createtriggerckb_intoon出库表
afterupdate
as
begin
declare@aachar(10),@bbchar(5),@ddint
select@aa=仓库号fromdeleted
select@bb=商品编号fromdeleted
select@dd=出库数量frominserted
update库存表
set库存数量=库存数量-@dd
where商品编号=@bband仓库号=@aa
End
第6章数据库视图的设计
1、建立商品表视图
USEMaterial
GO
createview商品表视图
as
select*
from商品表
2、创建商品库存视图来浏览库存中相同编号商品的信息,其中包括:
商品编号、商品名称和库存数量。
USEMaterial
GO
createview商品库存视图(商品编号,商品名称,库存数量)
as
select库存表.商品编号,商品表.商品名称,sum(库存表.库存数量)
from商品表,库存表
where商品表.商品编号=库存表.商品编号
groupby库存表.商品编号,商品表.商品名称
3、创建商品入库视图
USEMaterial
GO
createview商品入库视图
as
select商品表.商品编号,商品名称,生产厂家,型号,规格,入库号,仓库号,入库数量,入库日期
from商品表,入库表
where商品表.商品编号=入库表.商品编号
4、创建商品出库视图
USEMaterial
GO
createview商品出库视图
as
select商品表.商品编号,商品名称,生产厂家,型号,规格,出库号,仓库号,出库数量,出库日期
from商品表,出库表
where商品表.商品编号=出库表.商品编号
5、创建商品入库仓库视图
USEMaterial
GO
createview商品入库仓库视图
as
select商品表.商品编号,商品名称,入库表.仓库号,仓库名称
from商品表,入库表,仓库表
where商品表.商品编号=入库表.商品编号and入库表.仓库号=仓库表.仓库号
6、创建商品出库仓库视图
USEMaterial
GO
createview商品出库仓库视图
as
select商品表.商品编号,商品名称,出库表.仓库号,仓库名称
from商品表,出库表,仓库表
where商品表.商品编号=出库表.商品编号and出库表.仓库号=仓库表.仓库号
第7章存储过程设计
1、实现商品表的插入
useMaterial
go
ifexists(select*fromsysobjectswherename='shangpininsert')
dropprocedureshangpininsert
go
createprocedureshangpininsert@bianhaochar(5),@namevarchar(50),@changjiavarchar(50),@xinghaovarchar(50),@guigevarchar(20)
as
if(exists(select*from商品表where商品编号=@bianhao))
print('该商品已经存在,不能再次插入')
else
begin
Insertinto商品表
values(@bianhao,@name,@changjia,@xinghao,@guige)
print('插入成功')
End
execshangpininsert'11111','毛巾','纺织有限公司','DA0111','30*70cm'
2、实现商品表的删除
useMaterial
go
ifexists(select*fromsysobjectswherename='shangpindelete')
dropprocedureshangpindelete
go
createprocedureshangpindelete@bianhaochar(5)
as
if(exists(select商品编号from商品表where商品编号=@bianhao))
begin
delete
from商品表
where商品编号=@bianhao
print('删除成功,该商品已被删除')
end
elseprint('该商品不存在,不能删除')
execshangpindelete'12200'
3、按商品名称查询库存数量
useMaterial
go
ifexists(select*fromsysobjectswherename='shangpin_info1')
dropprocedureshangpin_info1
go
createprocedureshangpin_info1@shangpinnamevarchar(50)
as
selecta.商品编号,商品名称,b.库存数量
from商品表ajoin库存表b
ona.商品编号=b.商品编号
where商品名称=@shangpinname
execshangpin_info1'LG冰箱'
4、按商品名称查询入库数量
useMaterial
go
ifexists(select*fromsysobjectswherename='ruku_info10')
dropprocedureruku_info10
go
createprocedureruku_info10@shangpinnamevarchar(50)
as
select商品表.商品编号,商品名称,入库数量
from商品表join入库表
on商品表.商品编号=入库表.商品编号
where商品名称=@shangpinname
execruku_info10'acer宏基笔记本电脑'
5、按商品名称查询出库数量
useMaterial
go
ifexists(select*fromsysobjectswherename='chuku_info11')
dropprocedurechuku_info11
go
createprocedurechuku_info11@shangpinnamevarchar(50)
as
select商品表.商品编号,商品名称,出库数量
from商品表join出库表
on商品表.商品编号=出库表.商品编号
where商品名称=@shangpinname
execchuku_info11'msi微星电脑主板'
6、按入库日期查询入库数量
useMaterial
go
if
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 数据库 课程设计 库存 物资 管理 系统 后台数据库