数据库技术与应用大作业Word下载.docx
《数据库技术与应用大作业Word下载.docx》由会员分享,可在线阅读,更多相关《数据库技术与应用大作业Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
![数据库技术与应用大作业Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/16/ac8f0e59-01ff-4931-a46d-5e1c2452946c/ac8f0e59-01ff-4931-a46d-5e1c2452946c1.gif)
(1)一种货品可由多名供应商提供、可由多名零售商采购;
(2)一个供应商可以供应多种货品;
(3)一个零售商可以购买多种货品;
数据库中要记录企业的入库、出库的情况以及零售商、供应商、库存货品的基本信息。
除了对这些数据进行正常的维护之外,还产生一些报表:
入库报表,内容包括货品名称、数量、计量单位、金额、供应商名称、电话、入库日期。
出库报表,内容包括货品名称、数量、计量单位、金额、零售商名称、电话、出库日期。
库存报表,内容包括货品名称、数量、计量单位。
2数据库结构设计
2.1概念结构设计
对于这个企业库存管理系统,其核心活动是货品,库存货品与供应商之间是通过供应发生联系的,库存货品与零售商之间是通过购买发生联系的,因此,此系统所包含的实体有:
(1)库存货品:
用于描述一种货品的基本信息,用货品编号来标识此实体;
(2)供应商:
用于描述一个供应商的基本信息,由供应商编号来标识;
(3)零售商:
用于描述一个零售商的基本信息,由零售商编号来标识;
其初步E-R图如下:
经过初步分析,可知此系统中各实体所包含的基本属性为:
库存货品:
货品编号、货品名称、数量、计量单位;
供应商:
供应商编号、供应商名称、联系人、电话;
零售商:
零售商编号、零售商名称、联系人、电话。
2.2逻辑结构设计
第一步:
有了基本E-R图后,就可以进行逻辑结构设计了,也就是设计基本的关系模型。
设计基本关系模式主要是从E-R图出发,将其直接转换为关系模式。
根据转换规则,这个E-R图转换的关系模式为:
库存货品(货品编号、货品名称、数量、计量单位),主码为货品编号;
供应商(供应商编号、供应商名称、联系人、电话),主码为供应商编号;
零售商(零售商编号、零售商名称、联系人、电话),主码为零售商编号;
供应(供应商编号、货品编号、货品名称、数量、计量单位、单价、金额、入库日期),主码为(供应商编号、货品编号);
购买(零售商编号、货品编号、货品名称、数量、计量单位、单价、金额、出库日期),主码为(零售商编号、货品编号)。
第二步:
在设计好了关系模式并确定好了每个关系模式的主码后,再看一下这些关系模式之间的关联关系,即确定关系模式的外码,可通过E-R图中的联系实体发现:
供应关系中,供应商编号、货品编号是外码,分别引用供应商关系中的供应商编号和库存货品关系中的货品编号;
购买关系中,零售商编号、货品编号是外码,分别引用零售商关系中的零售商编号和库存货品关系中的货品编号;
第三步:
最后,确定表中各属性的详细信息,包括数据类型和长度等:
(1)库存信息表(库存货品表):
货品编号:
int(4),primarykey
货品名称:
char(10),notnull
数量:
numeric(9),notnull
计量单位:
char(5),notnull
(2)供应商信息表:
供应商编号:
供应商名称:
char(10)
联系人:
char(10),notnull
电话:
char(20),notnull
(3)零售商信息表:
零售商编号:
零售商名称:
(4)入库信息表(供应信息表):
int(4),foreignkey
int(4),foreignkey
单价:
money(8),notnull
金额:
入库日期:
datetime(8),notnull
(5)出库信息表(购买信息表):
出库日期:
第四步:
在SQLServer2000中建立上述表,并确定表和表之间的约束关系:
主码、外码、规则、默认等;
在企业管理器中建立库存信息表(库存货品表),并设置货品编号为主键,建立供应商信息表,并设置供应商编号为主键,建立零售商信息表,并设置零售商编号为主键,建立入库信息表(供应信息表),并设置供应商编号与货品编号为外键,建立出库信息表(购买信息表),并设置零售商编号与货品编号为外键。
规则:
数量必须为非负数
创建规则sl_scope
Createrulesl_scopeas@sl_scope>
=0
并将该规则绑定到库存信息表、入库信息表、出库信息表,
默认:
计量单位的默认值为‘个’
创建默认jl_wei
Createdefaultjl_weias‘个’
并将该默认绑定到库存信息表、入库信息表、出库信息表,
第五步:
报表的设计(视图的设计)
在数据库应用系统中,用户需要产生大量的报表,而报表的内容来自于数据库中的基本表,因此,在设计好数据库的基本表之后,要看一下这些基本表的内容是否全部包含了要产生的报表的内容。
入库报表:
货品名称、数量、计量单位、金额、供应商名称、电话、入库日期。
出库报表:
货品名称、数量、计量单位、金额、零售商名称、电话、出库日期。
3数据库行为功能设计
3.1安全控制
任何数据库应用系统都需要安全控制功能,教学管理系统用户分为如下几类:
(1)管理员:
有系统的全部权限;
(2)采购部:
具有对入库信息表、供应商信息表的维护权,对各表数据的查询权;
(3)销售部:
具有对出库信息表、零售商信息表的维护权,对各表数据的查询权;
(4)普通部:
对各表数据的查询权。
在实现时,每一类用户作为一个角色实现,这样在授权时,只对角色授权,而无需对每个具体的用户授权。
3.2数据操作
数据操作功能包括对这些数据进行录入、删除、修改功能。
(1)数据录入
供应商数据录入:
输入数据并显示出来
入库信息录入:
零售商信息录入:
出库信息录入:
(2)数据删除
将指定编号的供应商信息删除,显示剩余的信息:
将指定编号的入库信息删除,显示剩余的信息:
将指定编号的零售商信息删除,显示剩余的信息:
将指定编号的出库信息删除,显示剩余的信息:
(3)数据修改
供应商信息修改:
输入供应商编号,输入修改的电话
入库信息修改:
输入供应商编号与货品编号,输入修改的数量
零售商信息修改:
输入零售商编号,输入修改的电话
出库信息修改:
输入零售商编号与货品编号,输入修改的数量
(3)数据查询
查询入库信息:
输入供应商编号与货品编号查询信息
查询供应商信息:
输入供应商编号查询信息
查询出库信息:
输入零售商编号与货品编号查询信息
查询零售商信息:
输入零售商编号查询信息
查询库存信息:
输入货品编号查询库存信息
3.3生成报表
入库报表查询:
出库报表查询:
库存报表查询:
3.5触发器设计
入库信息表的触发器设计:
当入库信息表中输入一条信息,根据信息的货品编号判断,如果库存信息表中没有该货品,则在库存信息表中添加这条信息的数据;
若库存信息表中存在该货品,则将该货品库存信息表中的数量加上入库信息表输入信息的数量。
其中,用到了游标指针检测库存信息表中有无输入的货品编号。
CREATETRIGGERtrig_1ONdbo.入库信息表
FORINSERT
AS
declare@货品编号char(10)
begin
declarekc_cursorcursorforselect货品编号from库存信息表
openkc_cursor
fetchnextfromkc_cursorinto@货品编号
begin
while@@fetch_status=0
if(@货品编号=(select货品编号frominserted))
update库存信息表
set数量=数量+(select数量frominserted)
where货品编号=@货品编号
break
end
else
fetchnextfromkc_cursorinto@货品编号
if(@@fetch_status!
=0)
declare@hpbhchar(10),@hpmcchar(10),@slnumeric(8),@jldwchar(5)
select@hpbh=货品编号frominserted
select@hpmc=货品名称frominserted
select@sl=数量frominserted
select@jldw=计量单位frominserted
insert库存信息表(货品编号,货品名称,数量,计量单位)
values(@hpbh,@hpmc,@sl,@jldw)
closekc_cursor
deallocatekc_cursor
end
出库信息表的触发器设计:
当出库信息表中输入一条数据,则将该货品库存信息表中的数量减去出库信息表输入信息的数量。
CREATETRIGGERtrig_2ONdbo.出库信息表
update库存信息表
set数量=数量-(select数量frominserted)
where货品编号=(select货品编号frominserted)
附件
部分重要源代码:
ifmessagedlg('
确认修改'
mtconfirmation,[mbyes,mbno],0)=mryesthen
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('
update出库信息表set数量='
+Edit3.text);
where零售商编号='
'
+edit1.Text+'
and货品编号='
+edit2.Text+'
);
select*from出库信息表where出库信息表.零售商编号='
and出库信息表.货品编号='
adoq