资源描述
浙 江 树 人 大 学
信息科技学院
《数据库系统实习》
实习报告
课题:进销存管理系统
班级: 电商091
学号: 200905017128
姓名: 陆浩杰
2012.3
目录
第一章 需求分析 3
1.1系统目标 3
1.2系统功能划分 3
1.3功能描述(分模块描述) 4
第二章 概念结构设计 6
2.1 分E-R图及文字描述 6
2.2 各实体之间的联系图 8
2.3 全局E-R图,并加以文字描述 11
第三章 逻辑结构设计 12
3.1 逻辑结构及描述 12
第四章 物理结构设计 13
4.1创建表 13
4.2索引及其作用 17
第五章 数据库完整性、安全性设计 18
一、数据库完整性 18
5.1约束 18
5.2默认 19
5.3规则 21
5.4存储过程 22
5.5触发器 22
二、数据库安全性设计 24
5.2.1用户登录设计 24
5.2.2数据库用户设计 24
5.2.3各个登录的权限设计 24
5.2.4各个数据库用户的权限设计 24
三、这样设计的目的: 24
第六章 实训总结 25
6.1总结: 25
第一章 需求分析
1.1系统目标
进销存系统是对企业生产经营中进货、出货、批发销售、付款等进行全程跟踪管理,从接获订单合同开始,进入物料采购、入库、领用到产品完工入库、交货、回收货款、支付原材料款等,每一步都为您提供详尽准确的数据。有效辅助企业解决业务管理、分销管理、存货管理、营销计划的执行和监控、统计信息的收集等方面的业务问题。
在此部分给出系统的组织结构图图1
图1 进销存管理系统的组织结构图
1.2系统功能划分
功能划分并给出系统的功能结构图图2
图2 进销存管理系统功能图
1.3功能描述(分模块描述)
1. 用户登录
2. 基本信息管理
3. 采购管理
4. 销售管理
5. 库存管理
6. 报损管理
功能类别
功能名称、标识符
描述
用户登录
用户登录
对用户输入的用户名,密码进行验证,验证通过后,该用户可以使用PSS系统中自己拥有权限的那部分功能,否则拒绝使用。
基本信息管理
商品基本信息管理
商品基本信息的增加:记录商品的基本信息,比如规格和供应商等
商品基本信息的修改
商品基本信息的删除
商品记录管理
商品记录的查询:可以按照商品的类别和名称查询商品
商品记录的统计
商品记录的打印
客户信息管理
用户修改,删除,新增或查询客户数据(其中包括对客户的联系人的修改,删除,新增与查询以及对客户交易记录的查询),系统根据用户的操作,对商品资料进行更新或显示。
员工信息管理
员工修改,删除,新增或查询员工数据,系统根据用户的操作,对员工资料进行更新或显示。
供应商信息管理
用户修改,删除,新增或查询供应商数据(其中包括对供应商的联系人的修改,删除,新增与查询以及对供应商交易记录的查询),系统根据用户的操作,对供应商资料进行更新或显示。
采购管理
采购入库
用户通过录入采购入库单增加采购的货物,并可对采购入库单及其单据中的货物明细进行修改、删除与查询。
进货管理
商品进货信息的登记:记录商品的进货数量、单价、供货商等
商品进货信息的修改、删除等
更新库存
采购信息的变动也使商品库存改变,及时更新库存的信息
打印报表
对全部采购记录或满足条件的采购记录列表以报表的形式进行打印
销售管理
进货管理
商品销售信息的登记:记录商品的销售数量、单价、销售日期等
商品销售信息的修改、删除等
统计查询
根据商品的类别、名称、供货商等来查询统计商品的销售情况
更新库存
销售信息的变动也使商品库存改变,及时更新库存的信息
打印报表
对全部销售记录或满足条件的销售记录列表以报表的形式进行打印输出
库存管理
统计查询
用户通过组合不同条件,对库存进行查询、盘点。
打印报表
各种有关报表的打印
报损管理
进货管理
商品报损信息的登记:记录商品的报损信息,包括商品报损数量、报损原因等
商品报损信息的修改、删除等
统计查询
根据商品的类别、名称、供货商等来查询统计商品的报损情况
更新库存
报损信息的变动也使商品库存改变,及时更新库存的信息
打印报表
对全部销售记录或满足条件的报损记录列表以报表的形式进行打印输出
第二章 概念结构设计
2.1 分E-R图及文字描述
n 商品的实体与属性如图3所示,商品的属性主要包括商品编号,商品名称,商品规格,商品价格,计量单位。
图3 “商品”实体E-R图
n 供货商的实体与属性如图4所示,供货商的属性主要包括供货商编号,供货商名称,联系人,联系方式,地址。
图4 “供货商”实体E-R图
n 客户的实体与属性如图5所示,客户的属性主要包括客户编号,客户名,联系方式,地址。
图5 “客户”实体E-R图
n 员工的实体与属性如图6所示,员工的属性主要包括员工编号,员工姓名,性别,联系方式,部门
图6 “员工”实体E-R图
n 仓库的实体与属性如图7所示,仓库的属性主要包括仓库编号,仓库名称,库存数量,员工编号。
图7 “仓库”实体E-R图
2.2 各实体之间的联系图
n 员工、商品、客户三者的实体联系如图8所示,它们之间由销售这个关系构成的是多对多的联系。
图8 “员工—商品--客户”实体联系图
n 商品、仓库三者的实体联系如图9所示,它们之间是由出库和入库这两个关系分别构成的是多对多的联系。
图9 “商品--仓库”联系图
n 员工、商品、供货商三者的实体联系如图10所示,它们之间由采购构成的是多对多的联系。
图10 “员工—商品--供货商”联系图
n 员工、商品实体联系如图11所示,它们之间由报损这个关系构成的是多对多的联系。
图11 “员工--商品”联系
2.3 全局E-R图,并加以文字描述
根据需求分析,设计出来的实体有客户实体,商品实体,供货商实体,员工实体,仓库实体。根据实体之间的联系,构建了进销存管理系统的E-R图,如下图12所示。
图12 “进销存管理系统”全局E-R图
第三章 逻辑结构设计
3.1 逻辑结构及描述
逻辑结构设计阶段的任务是将概念结构设计阶段所得到的概念模型转换为具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。
从E-R图向关系模式转化 数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将E-R图中的实体、实体的属性和实体之间的联系转化为关系模式。
Ø 实体转换为关系模式
l 商品(商品编号,商品名称,商品规格,商品价格,计量单位)
l 供货商(供货商编号,供货商名称,联系人,联系方式,地址)
l 客户(客户编号,客户名,联系方式,地址)
l 员工(员工编号,员工姓名,性别,部门,联系方式)
l 仓库(仓库编号,仓库名称,仓库容量)
Ø 联系转换为关系模式
l 采购(采购编号,进货单价,进货数量,进货日期,商品编号,供货商编号,员工编号)
l 销售(销售编号,销售日期,商品编号,销售数量,销售单价,员工编号,客户编号)
l 报损(报损编号,报损数量,报损日期,报损原因,商品编号,员工编号)
l 出库(出库编号,仓库编号,出库日期,出库数量,商品编号)
入库(入库编号,仓库编号,入库日期,入库数量,商品编号)
第四章 物理结构设计
4.1创建表
1. 商品
CREATE TABLE sp
(商品编号 Char(4) Not null primary key,
商品名称 Varchar(20) Not null,
商品规格 varchar(20),
商品价格 Char(20),
计量单位 Varchar(4))
列名
数据类型
长度
Null
说明
商品编号
Char
4
Not null
主键
商品名称
Varchar
20
Not null
商品规格
Varchar
20
商品价格
Char
20
计量单位
Varchar
4
2. 员工
CREATE TABLE yg
(员工编号 Char(4) Not null primary key,
员工姓名 Varchar(20) Not null,
性别 Varchar(4),
部门 varchar(20),
联系方式 Char(20))
列名
数据类型
长度
Null
说明
员工编号
Int
4
Not null
主键
员工姓名
varchar
20
Not null
性别
Varchar
4
部门
Varchar
20
联系方式
Char
20
3. 供货商
CREATE TABLE ghs
(供货商编号 Char(4) Not null primary key,
供货商名称 Varchar(50) Not null,
联系人 Varchar(20),
地址 varchar(50),
联系方式 Char(20))
列名
数据类型
长度
Null
说明
供货商编号
Char
4
Not null
主键
供货商名称
Varchar
20
Not null
联系人
Varchar
20
联系方式
Char
20
地址
Varchar
50
4. 客户
CREATE TABLE kh
(客户编号 Char(4) Not null primary key,
客户名 Varchar(50) Not null,
地址 varchar(50),
联系方式 Char(20))
列名
数据类型
长度
Null
说明
客户编号
Char
4
Not null
主键
客户名
Varchar
20
Not null
联系方式
Char
20
地址
Varchar
50
5. 仓库
CREATE TABLE ck
(仓库编号 Char(4) Not null primary key,
仓库名称 Varchar(50) Not null,
仓库容量 char(50))
列名
数据类型
长度
Null
说明
仓库编号
Char
4
Not null
主键
仓库名称
Varchar
20
Not null
仓库容量
Char
200
6. 采购
CREATE TABLE cg
(采购编号 Char(4) Not null primary key,
进货单价 Char(20) ,
进货数量 Char(20),
进货日期 Smalldatetime,
商品编号 Char(4) Not null,
供货商编号Char(4) Not null,
员工编号 Char(4) Not null)
列名
数据类型
长度
Null
说明
采购编号
Char
4
Not null
主键
进货单价
Char
20
进货数量
Char
20
进货日期
Smalldatetime
商品编号
Char
4
Not null
外键
供货商编号
Char
4
Not null
外键
员工编号
Char
4
Not null
外键
7. 销售
CREATE TABLE xs
(销售编号 Char(4) Not null primary key,
销售单价 Char(20) ,
销售数量 Char(20),
销售日期 Smalldatetime,
商品编号 Char(4) Not null,
客户编号Char(4) Not null,
员工编号 Char(4) Not null)
列名
数据类型
长度
Null
说明
销售编号
Char
4
Not null
主键
销售单价
Char
20
销售数量
Char
20
销售日期
Smalldatetime
商品编号
Char
4
Not null
外键
客户编号
Char
4
Not null
外键
员工编号
Char
4
Not null
外键
8. 报损
CREATE TABLE bs
(报损编号 Char(4) Not null primary key,
报损数量 Char(20),
报损日期 Smalldatetime,
报损原因 varchar(200),
商品编号 Char(4) Not null,
员工编号 Char(4) Not null)
列名
数据类型
长度
Null
说明
报损编号
Char
4
Not null
主键
报损数量
Char
20
报损日期
Smalldatetime
报损原因
Varchar
200
商品编号
Char
4
Not null
外键
员工编号
Char
4
Not null
外键
9. 出库
CREATE TABLE chuk
(出库编号 Char(4) Not null primary key,
出库数量 Char(20),
出库日期 Smalldatetime,
商品编号 Char(4) Not null,
仓库编号 Char(4) Not null)
列名
数据类型
长度
Null
说明
出库编号
Char
4
Not null
主键
出库数量
Char
20
出库日期
Smalldatetime
商品编号
Char
4
Not null
外键
仓库编号
Char
4
Not null
外键
10. 入库
CREATE TABLE rk
(入库编号 Char(4) Not null primary key,
入库数量 Char(20),
入库日期 Smalldatetime,
商品编号 Char(4) Not null,
仓库编号 Char(4) Not null)
列名
数据类型
长度
Null
说明
入库编号
Char
4
Not null
主键
入库数量
Char
20
入库日期
Smalldatetime
商品编号
Char
4
Not null
外键
仓库编号
Char
4
Not null
外键
4.2索引及其作用
1.索引的作用:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
2.索引名: 商品价格
建这个索引的作用:
在进销存管理系统中,因为经常会根据商品的价格进行商品的查询的,因此可以在商品表上基于“商品价格”字段建立以升序排列的索引,这样进行数据检索时,同样可以显著减少查询中的时间。
代码如下:
USE jxc
GO
CREATE INDEX 商品价格 ON dbo.sp(商品价格)
3.索引名: 部门
² 建这个索引的作用
在进销存管理系统中,因为经常会根据员工的部门进行相关信息的查询,因此可以在员工表上基于“部门”字段建立以升序排列的索引,这样进行数据检索时,同样可以显著减少查询中的时间。
² 创建索引的代码
USE jxc
GO
CREATE INDEX 部门 ON dbo.yg(部门)
第五章 数据库完整性、安全性设计
一、数据库完整性
5.1约束
1. 约束名: Sex
² 约束的类型
CHECK约束
² 创建约束的作用
对性别列中的值进行限制,使其值只能接受“男”或“女”,以强制执行域的完整性
² 创建约束的代码
alter table YG
add constraint Sex check(性别between '男' and '女')
2. 约束名: Con_GoodsNo1
² 约束的类型
FOREIGN KEY约束
² 创建约束的作用
把销售表中的“商品编号”列和商品表中的“商品编号”关联起来
² 创建约束的代码
alter table XS
add constraint Con_GoodsNo1 foreign key(商品编号) references 商品(商品编号)
3. 约束名: Sname
约束的类型
UNIQUE约束
创建约束的作用
把员工表中的“员工姓名”设为唯一键约束
创建约束的代码
alter table YG add unique(sname)
5.2默认
1. 默认名: Default_Unit
² 默认的绑定对象
商品表中的计量单位列
² 创建默认的作用
在插入数据行时,为没有指定数据的计量单位列提供事先定义的默认值。
² 创建和绑定默认的代码
l 创建一个默认值为'个'的默认值
create default Default_Unit as '个'
l 将创建的Default_Unit 默认值绑定到商品表的计量单位列上
exec sp_bindefault 'Default_Unit', 'SP.计量单位'
2. 默认名: Default_sex
² 默认的绑定对象
员工表中的性别列
² 创建默认的作用
在插入数据行时,为没有指定数据的性别列提供事先定义的默认值。
² 创建和绑定默认的代码
l 创建一个默认值为'男'的默认值
create default Default_sex as '男'
l 将创建的Default_sex 默认值绑定到商品表的计量单位列上
exec sp_bindefault 'Default_sex', 'YG.sex'
3. 默认名: Default_dz
² 默认的绑定对象
客户表中的地址列
² 创建默认的作用
在插入数据行时,为没有指定数据的地址列提供事先定义的默认值。
² 创建和绑定默认的代码
l 创建一个默认值为'杭州'的默认值
create default Default_DZ as '杭州'
l 将创建的Default_sex 默认值绑定到商品表的计量单位列上
exec sp_bindefault 'Default_DZ', 'KH.dz'
4. 默认名: Default_ck
² 默认的绑定对象
仓库表中的仓库编号列
² 创建默认的作用
在插入数据行时,为没有指定数据的仓库列提供事先定义的默认值。
² 创建和绑定默认的代码
l 创建一个默认值为'0001'的默认值
create default Default_ckbh as '0001'
l 将创建的Default_sex 默认值绑定到商品表的计量单位列上
exec sp_bindefault 'Default_ckbh', 'ck.ckbh'
5.3规则
1. 规则名: rule_Spec
² 规则的绑定对象
员工表中的部门列
² 创建规则的作用
在插入数据行时,指定接受的数据值的范围
² 创建和绑定规则的要求
l 定义一个规则rule_Spec,这个规则限制员工中的部门列只能取以下的值:采购部、销售部、办公室、仓储部,财务部。
create rule rule_Spec
as
@list in ('采购部','销售部','仓储部','财务部','办公室')
l 将上题创建的rule_Spec规则绑定到员工表的部门列上
exec sp_bindrule 'rule_Spec', 'YG.部门'
2.规则名: rule_ age
² 规则的绑定对象
客户表中的年龄列
² 创建规则的作用
在插入数据行时,指定接受的数据值的范围
² 创建和绑定规则的要求
定义一个规则rule_age,这个规则限制员工中的部门列只能取以下的:1970-2001
create rule rule_age
as
@age>25 and @年龄<35
exec sp_bindrule 'rule_Age', 'yg.年龄'
5.4存储过程
1. 存储过程名: proc1
² 创建存储过程的作用
根据商品编号,查询该商品的进货情况,其中包括该商品的商品编号,商品名称,商品规格,进货单价,进货数量,进货日期,供货商名称。
² 创建存储过程的代码
create procedure proc1
@商品编号char(4)
as
select xp.商品编号,商品名称,商品规格,采购.进货单价,进货数量,进货日期,ghs.供货商名称
from xp,cg,ghs
where xp.商品编号=cg.商品编号and cg.供货商编号=ghs.供货商编号and xp.商品编号=@商品编号
5.5触发器
1. 触发器名: trigger1
² 创建触发器的作用
当表中的一行被插入、修改或删除时,触发器被执行。实现当修改员工表中的数据时,显示提示信息“员工表被修改了”
² 创建触发器的代码
create trigger trigger1
on YG
for update
as
print'员工表被修改了'
2. 触发器名: trigger2
² 创建触发器的作用
当表中的一行被插入、修改或删除时,触发器被执行。实现当修改客户表中的数据时,显示提示信息“客户表被修改了”
² 创建触发器的代码
create trigger trigger1
on KH
for update
as
print'客户表被修改了'
3. 触发器名: trigger3
² 创建触发器的作用
当表中的一行被插入、修改或删除时,触发器被执行。实现当修改供货商表中的数据时,显示提示信息“供货商被修改了”
² 创建触发器的代码
create trigger trigger3
on GHS
for update
as
print'供货商表被修改了'
4. 触发器名: trigger4
² 创建触发器的作用
当表中的一行被插入、修改或删除时,触发器被执行。实现当修改仓库表中的数据时,显示提示信息“仓库表被修改了”
² 创建触发器的代码
create trigger trigger5
on ck
for update
as
print'仓库表被修改了'
二、数据库安全性设计
5.2.1用户登录设计
创建登录账号loginA,口令分别为123
sp_addlogin 'loginA','123'
5.2.2数据库用户设计
创建进销存管理系统数据库的userA用户账号
sp_grantdbaccess 'loginA','userA'
添加进销存管理系统数据库的角色userB
sp_addrole 'roleB'
为角色roleB添加用户userA
sp_addrolemember 'roleB','userA'
5.2.3各个登录的权限设计
以账号sa登录
将进销存管理系统数据库中的商品表的Select许可授予角色roleB
Use JXC
Go
Grant Select On SP to roleB
5.2.4各个数据库用户的权限设计
授予或拒绝用户userA在员工表上的Insert,Update,Delete权限
Grant Insert,Update,Delete On YG To userA
deny Insert,Update,Delete On YG To userA
三、这样设计的目的:
创建登录账号和口令决定了用户是否能获得SQL Server服务器的访问权,以及在获得访问权后可以利用的资源。
设计的用户和可以使其获得针对该数据库的访问权,也可以实现特定权限的授予,这样保证了数据库的安全性。
第六章 实训总结
6.1总结:
本学期第4周,我参加了数据库系统设计的实训。
这是我第一次系统又完整地接触数据库系统设计的全过程。我的设计的题目是“进销存管理系统”。在这次课程设计中,我的能力得到了锻炼,自己也有许多心得和体会。
这是一个系统的工程,需要我们掌握多方面的知识。在这次实训中,我觉得自己的知识面还是有欠缺的。需要在以后的学习工作中加以注意,要全面的提高自己的知识面与知识层次。
在实训这一段时间里,我每天的生活基本是在构思功能、清理思路、构造关系图中完成的。数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
有时,这种生活令人感到乏味和疲倦,但是在这种近似枯燥的生活中,我的逻辑设计能力有了一定程度的提高,这是这次实训中我最大的收获。以前学习数据库时,总是静不下心来,不能认真的看书。这次实训,为了顺利的完成工作,我认真的预习和学习了数据库相关知识,并有了一定的心得体会。要注意理论联系实际,注意将课本上的知识应用到日常的操作中,真正做到学以致用。只有这样,才能做到目的明确,才能有足够的学习动力。所以在以后的工作学习中,自己全身心的投入,这样学习才会有效率,才会有效果。
总之,理论联系实际是非常重要的,通过这次实训我收获很多。
展开阅读全文