1、数据库技术与应用大作业数据库技术与应用大作业题目:数据库应用系统的设计和实现适用专业: 控制类 指导老师: 熊永华 班级: 控制0813班 姓名: 宦瑞坤 学号: 0909082807 中南大学信息科学与工程学院2009年12月1 需求说明这里要实现一个企业库存管理系统,为简单起见,在此库存系统中只涉及对出库、入库和库存货品的管理。要求此系统能够记录企业的入库、出库的情况以及零售商、供应商、库存货品的基本信息,具体要求为:(1)一种货品可由多名供应商提供、可由多名零售商采购;(2)一个供应商可以供应多种货品;(3)一个零售商可以购买多种货品;数据库中要记录企业的入库、出库的情况以及零售商、供应
2、商、库存货品的基本信息。除了对这些数据进行正常的维护之外,还产生一些报表:入库报表,内容包括货品名称、数量、计量单位、金额、供应商名称、电话、入库日期。出库报表,内容包括货品名称、数量、计量单位、金额、零售商名称、电话、出库日期。库存报表,内容包括货品名称、数量、计量单位。2 数据库结构设计2.1 概念结构设计对于这个企业库存管理系统,其核心活动是货品,库存货品与供应商之间是通过供应发生联系的,库存货品与零售商之间是通过购买发生联系的,因此,此系统所包含的实体有:(1)库存货品:用于描述一种货品的基本信息,用货品编号来标识此实体;(2)供应商:用于描述一个供应商的基本信息,由供应商编号来标识;
3、(3)零售商:用于描述一个零售商的基本信息,由零售商编号来标识;其初步E-R图如下:经过初步分析,可知此系统中各实体所包含的基本属性为:库存货品:货品编号、货品名称、数量、计量单位;供应商:供应商编号、供应商名称、联系人、电话;零售商:零售商编号、零售商名称、联系人、电话。2.2 逻辑结构设计第一步:有了基本E-R图后,就可以进行逻辑结构设计了,也就是设计基本的关系模型。设计基本关系模式主要是从E-R图出发,将其直接转换为关系模式。根据转换规则,这个E-R图转换的关系模式为:库存货品(货品编号、货品名称、数量、计量单位),主码为货品编号;供应商(供应商编号、供应商名称、联系人、电话),主码为供
4、应商编号;零售商(零售商编号、零售商名称、联系人、电话),主码为零售商编号;供应(供应商编号、货品编号、货品名称、数量、计量单位、单价、金额、入库日期),主码为(供应商编号、货品编号);购买(零售商编号、货品编号、货品名称、数量、计量单位、单价、金额、出库日期),主码为(零售商编号、货品编号)。第二步:在设计好了关系模式并确定好了每个关系模式的主码后,再看一下这些关系模式之间的关联关系,即确定关系模式的外码,可通过E-R图中的联系实体发现:供应关系中,供应商编号、货品编号是外码,分别引用供应商关系中的供应商编号和库存货品关系中的货品编号;购买关系中,零售商编号、货品编号是外码,分别引用零售商关
5、系中的零售商编号和库存货品关系中的货品编号;第三步:最后,确定表中各属性的详细信息,包括数据类型和长度等:(1) 库存信息表(库存货品表):货品编号:int(4),primary key货品名称:char(10), not null数量:numeric(9),not null计量单位:char(5),not null(2) 供应商信息表:供应商编号:int(4),primary key供应商名称:char(10)联系人:char(10),not null电话:char(20),not null(3) 零售商信息表:零售商编号:int(4),primary key零售商名称:char(10)联系
6、人:char(10),not null电话:char(20),not null(4) 入库信息表(供应信息表):供应商编号:int(4),foreign key货品编号:int(4), foreign key货品名称:char(10), not null数量:numeric(9),not null计量单位:char(5),not null单价:money(8),not null金额:money(8),not null入库日期:datetime(8),not null(5) 出库信息表(购买信息表):零售商编号:int(4),foreign key货品编号:int(4), foreign key
7、货品名称:char(10), not null数量:numeric(9),not null计量单位:char(5),not null单价:money(8),not null金额:money(8),not null出库日期:datetime(8),not null第四步:在SQL Server2000中建立上述表,并确定表和表之间的约束关系:主码、外码、规则、默认等;在企业管理器中建立库存信息表(库存货品表),并设置货品编号为主键,建立供应商信息表,并设置供应商编号为主键,建立零售商信息表,并设置零售商编号为主键,建立入库信息表(供应信息表),并设置供应商编号与货品编号为外键,建立出库信息表(购
8、买信息表),并设置零售商编号与货品编号为外键。规则:数量必须为非负数创建规则sl_scopeCreate rule sl_scope as sl_scope=0并将该规则绑定到库存信息表、入库信息表、出库信息表, 默认:计量单位的默认值为个创建默认jl_wei Create default jl_wei as 个并将该默认绑定到库存信息表、入库信息表、出库信息表, 第五步:报表的设计(视图的设计)在数据库应用系统中,用户需要产生大量的报表,而报表的内容来自于数据库中的基本表,因此,在设计好数据库的基本表之后,要看一下这些基本表的内容是否全部包含了要产生的报表的内容。入库报表:货品名称、数量、计
9、量单位、金额、供应商名称、电话、入库日期。出库报表:货品名称、数量、计量单位、金额、零售商名称、电话、出库日期。库存报表,内容包括货品名称、数量、计量单位。3 数据库行为功能设计3.1 安全控制任何数据库应用系统都需要安全控制功能,教学管理系统用户分为如下几类:(1)管理员:有系统的全部权限;(2)采购部:具有对入库信息表、供应商信息表的维护权,对各表数据的查询权;(3)销售部:具有对出库信息表、零售商信息表的维护权,对各表数据的查询权;(4)普通部:对各表数据的查询权。在实现时,每一类用户作为一个角色实现,这样在授权时,只对角色授权,而无需对每个具体的用户授权。3.2 数据操作数据操作功能包
10、括对这些数据进行录入、删除、修改功能。(1) 数据录入供应商数据录入:输入数据并显示出来入库信息录入:输入数据并显示出来零售商信息录入:输入数据并显示出来出库信息录入:输入数据并显示出来(2) 数据删除将指定编号的供应商信息删除,显示剩余的信息:将指定编号的入库信息删除,显示剩余的信息:将指定编号的零售商信息删除,显示剩余的信息:将指定编号的出库信息删除,显示剩余的信息:(3)数据修改供应商信息修改:输入供应商编号,输入修改的电话入库信息修改:输入供应商编号与货品编号,输入修改的数量零售商信息修改:输入零售商编号,输入修改的电话出库信息修改:输入零售商编号与货品编号,输入修改的数量(3) 数据
11、查询查询入库信息:输入供应商编号与货品编号查询信息查询供应商信息:输入供应商编号查询信息查询出库信息:输入零售商编号与货品编号查询信息查询零售商信息:输入零售商编号查询信息查询库存信息:输入货品编号查询库存信息3.3 生成报表入库报表查询:出库报表查询:库存报表查询:3.5 触发器设计 入库信息表的触发器设计:当入库信息表中输入一条信息,根据信息的货品编号判断,如果库存信息表中没有该货品,则在库存信息表中添加这条信息的数据;若库存信息表中存在该货品,则将该货品库存信息表中的数量加上入库信息表输入信息的数量。其中,用到了游标指针检测库存信息表中有无输入的货品编号。CREATE TRIGGER t
12、rig_1 ON dbo.入库信息表 FOR INSERT ASdeclare 货品编号 char(10)begindeclare kc_cursor cursor for select 货品编号 from 库存信息表open kc_cursor fetch next from kc_cursor into 货品编号 begin while fetch_status=0 if(货品编号=(select 货品编号 from inserted) begin update 库存信息表 set 数量=数量+(select 数量 from inserted) where 货品编号=货品编号 break
13、end else fetch next from kc_cursor into 货品编号 endif(fetch_status!=0) begin declare hpbh char(10),hpmc char(10),sl numeric(8) ,jldw char(5) select hpbh=货品编号 from inserted select hpmc=货品名称 from inserted select sl=数量 from inserted select jldw=计量单位 from inserted insert 库存信息表(货品编号,货品名称,数量,计量单位) values(hpb
14、h,hpmc,sl,jldw) endclose kc_cursordeallocate kc_cursorend出库信息表的触发器设计:当出库信息表中输入一条数据,则将该货品库存信息表中的数量减去出库信息表输入信息的数量。CREATE TRIGGER trig_2 ON dbo.出库信息表 FOR INSERT ASupdate 库存信息表set 数量=数量-(select 数量 from inserted)where 货品编号=(select 货品编号 from inserted)附件部分重要源代码:begin if messagedlg(确认修改,mtconfirmation,mbyes,mbno,0)=mryes thenbeginadoquery1.Close;adoquery1.SQL.clear;adoquery1.SQL.Add(update 出库信息表 set 数量=+Edit3.text );adoquery1.SQL.Add(where 零售商编号=+edit1.Text+ and 货品编号=+edit2.Text+);adoquery1.SQL.Add(select * from 出库信息表 where 出库信息表.零售商编号=+edit1.Text+ and 出库信息表.货品编号=+edit2.Text+);adoq
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1