1、 电商09数据库系统实习报告(学号+姓名) 浙 江 树 人 大 学 信息科技学院 《数据库系统实习》 实习报告 课题: 进销存管理系统 班级: 电商091 学号: 200905017122 姓名: 何锴翔 2012.3 目录 第一章 需求分析 3 1.1 功能介绍 3 1.2 系统目标 3 1.3系统功能划分 3 1.4功能描述 3 第二章 概念结构设计 5 2.1目的 5 2.2各
2、个分E-R图 5 2.3全局E-R图 8 第三章 逻辑结构设计 10 3.1目的 10 3.2建立关系模式 10 3.3关系模式规范化 10 第四章 物理结构设计 12 4.1目的 12 4.2表的构建 12 4.3索引的作用 15 4.4索引代码 15 第五章 数据库完整性、安全性设计 16 5.1目的 16 5.2数据库完整性设计 16 5.3数据库安全性设计 18 第六章 实训总结 20 6.1实训总结 20 第一章 需求分析 1.1 功能介绍 进销存软件的功能有购 采购、采购退货、采购付款、销售、销售退货、销售付款、退货情况、盘库、仓库调拨
3、借入、借出、借入还出、借出还入,供方客户资料管理,供方供货汇总、明细报表,采购付款汇总、明细报表多仓库,多币种,多结算方式(先进先出,移动平均等),报表等功能,进销存可以使您摆脱繁杂的数字统计等琐事,只需轻松的点击鼠标即可,进销存可以分为B/S架构和C/S架构.B/S是 浏览器/服务器 模式,只要在服务器装好后,其他人只需要用浏览器(比如IE)就可以正常浏览。 1.2 系统目标 药房进销存系统组织结构图 1.3系统功能划分 系统功能结构图 1.4功能描述 w 入库管理 入库单录入:将新进的药品进行入库扫描,录入,方便确认核对。 冲入库单:将之前录
4、入的入库单进行冲销,进行第二次录入 入库单作废:药品录入完毕时,发现入库单有错但已无法更改时,该入库单将以作废处理,再进行重新录入。 重打入库单:对已录入的入库单进行重新操作。 添加发票号:将录入完成的药品添加发票号。 w 出库管理 出库单录入:药品在出仓前进行出库扫描,方便确认核对。 冲出库单:将之前录入的出库单进行冲销,进行第二次录入。 出库单作废:药品录入完毕时,发现入库单有错但已无法更改时,该 出库单将以作废处理,再进行重新录入。 重打出库单:对已录入的出库单进行重新操作。 w 移库管理
5、 移库单录入:药品从该仓库转移到另一仓库时,双方仓库均进行移库扫描,方便确认核对。 冲移库单:将之前录入的移库单进行冲销,进行第二次录入。 移库单作废:将要移库药品录入完毕时,发现移库单有错但已无法更改时, 该移库单将以作废处理,再进行重新录入。 重打移库单:对已录入的移库单进行重新操作。 接受移库:确定转移的药品无误,双方录入也无错误时,确定接受移库。 w 仓库复核 在进行入库,出库,移库等操作后进行仓库的复核,确定药品出入无误。 w 查询与统计 入库单查询:对已经录入仓库的药品进行查询。
6、 出库单查询:对已经录入出库的药品进行查询。 移库单查询:对已经录入移库的药品进行查询。 仓库查询:对仓库中存有的药品进行查询。 打印物价本:对全部采购记录以报表的形式进行打印输出。 w 收款与复核 进行财务的核对。 w 系统维护 对整个系统,数据,以及客户资料进行维护。 第二章 概念结构设计 2.1目的 w 掌握数据库概念结构设计的方法 w 掌握E-R图的画法 2.2各个分E-R图 分E-R图的建立依据于数据流图的建立,如下图所示。 w 供应商实体图的属性包括供
7、应商编号,供应商名称,供应商品数量,供应商地址,联系方式。如图2-1所示 图2-1 供应商实体图 w 管理员实体图的属性包括管理员编号,管理员姓名,性别,地址,联系方式,部门。如图2-2所示 图2-2管理员实体图 w 客户实体图的属性包括编号,姓名,性别,年龄,联系方式,地址。如图2-3所示 图2-3客户实体图 w 商品实体图的属性包括商品编号,商品名称,供应商,商品批号商品规格,生产厂家,生产日期,入库价格,零售价格,备注。如图2-4所示 图2-4商品实体图 w 仓库实体图的属性包括仓库名称,仓库编号,备注信息。如图2-5所示 图2-5仓库实体图 w 采购员实
8、体图的属性包括编号,姓名,地址,联系方式。如图2-6所示 图2-6采购员实体图 w 供应商—采购员之间的联系图,如图2-7所示 图2-7供应商—采购员联系图 供应商可以将商品提供给多个采购员,采购员也可以向多个供应商进行采购,因此,供应商与采购员之间的联系是m:n的关系。 w 商品—采购员之间的联系图,如图2-8所示 图2-8商品—采购员联系图 商品可以提供给多个采购员,采购员也可以采购多种商品,因此,商品与采购员之间的联系是m:n的关系。 w 商品—管理员之间的联系图,如图2-9所示 图2-9商品—管理员之间的联系图 管理员可以管理多种商品,因此,商品与管
9、理员之间的联系是1:n的关系。 w 仓库—管理员之间的联系图,如图2-10所示 图2-10管理员—仓库之间的联系图 管理员可以同时管理多个仓库,一个仓库也可以由多个管理员来管理,因此,仓库与管理员之间的联系是m:n的关系。 w 仓库—商品之间的联系图,如图2-11所示 图2-11商品—仓库之间的联系图 仓库可以存储多种商品,方便管理将多个商品也能存储在一个仓库中,因此,仓库与商品之间的联系是1:n的关系。 w 仓库—商品之间的联系图,如图2-12所示 图2-12商品—客户之间的联系图 商品可以由多个客户购买,一个客户也可以购买多个商品,因此,商品与客户之间的联系是
10、m:n的关系。 2.3全局E-R图 综合各部分的分E-R图,药品进销存管理系统的总体E-R图的设计如下图2-13所示。 图2-13全局E-R图 供应商提供商品给采购员,可以是多个供应商将商品提供给多个采购员,因此,供应商与采购员的关系是m:n的关系。多个采购员采购商品,可以采购多种商品,因此,采购员与商品之间的联系是m:n的关系。管理员将商品进行整理,为管理方便,通常由一个管理员来整理仓库中的商品,因此,管理员与商品之间的联系是m:n的关系。为了方便管理,由管理员来管理多个仓库,因此,管理员与仓库之间的联系是1:n的关系。仓库可以存储多种商品,商品也能存储在多个仓库中,因此,仓
11、库与商品之间的联系是1:n的关系。客户购买商品,经常是多个客户买多种商品,所以商品与客户之间的联系也是m:n的关系。 第三章 逻辑结构设计 3.1目的 w 掌握数据库逻辑结构设计的方法 w 掌握E-R图向管理数据模型转化的几个原则 3.2建立关系模式 供应商和采购员为m:n的关系,将它们之间的联系转换为独立的关系模式。采购员和商品为m:n的关系,将它们之间的联系转换为独立的关系模式。仓库和商品的关系为1:n,将它们之间的联系与n端实体合并。管理员和仓库为m:n的关系,将它们之间的联系转换为独立的关系模式。管理员和商品的关系为1:n的关系,将它们之间的联系与n端实体合并。客户和商品之
12、间的联系为m:n的关系,将它们之间的联系转换为独立的关系模式。 w 实体转换为关系模式 供应商(供应商编号,供应商名称,供应商品数量,供应商地址,联系方式) 采购员(采购员编号,采购员姓名,地址,联系方式) 商品(商品编号,商品名称,供应商,商品批号,商品规格,生产厂家,入库价格,零售价格,生产日期,备注) 管理员(管理员编号,管理员姓名,性别,部门,联系方式,地址) 仓库(仓库编号,仓库名称,备注) 客户(客户编号,客户姓名,性别,年龄,联系方式,地址) w 联系转换为关系模式 提供(供应商编号,采购员编号,供应商品数量,联系方式) 采购(商品编号,采购员编号,商品数量,
13、商品价格,采购日期) 整理(商品编号,管理员编号,商品数量) 管理(管理员编号,仓库编号,部门) 存储(商品编号,仓库编号,商品数量) 购买(商品编号,客户编号,商品数量,零售价格,销售日期,联系方式) 3.3关系模式规范化 w 供应商和采购员为m:n的关系,将它们之间的联系转换为独立的关系模式。 供应商(供应商编号,供应商名称,供应商品数量,供应商地址,联系方式) 采购员(采购员编号,采购员姓名,地址,联系方式) 提供(供应商编号,采购员编号,供应商品数量,联系方式) w 采购员和商品为m:n的关系,将它们之间的联系转换为独立的关系模式。 采购员(采购员编号,采购员姓名
14、地址,联系方式) 商品(商品编号,商品名称,供应商,商品批号,商品规格,生产厂家,入库价格,零售价格,生产日期,备注) 采购(商品编号,采购员编号,商品数量,商品价格,采购日期) w 仓库和商品的关系为1:n,将它们之间的联系与n端实体合并。 仓库(仓库编号,仓库名称,备注) 商品(商品编号,商品名称,供应商,商品批号,商品规格,生产厂家,入库价格,零售价格,生产日期,备注,商品数量) w 管理员和仓库为m:n的关系,将它们之间的联系转换为独立的关系模式。 管理员(管理员编号,管理员姓名,性别,部门,联系方式,地址) 仓库(仓库编号,仓库名称,备注) 管理(管理员编号,仓库
15、编号,部门) w 管理员和商品的关系为1:n的关系,将它们之间的联系与n端实体合并。 管理员(管理员编号,管理员姓名,性别,部门,联系方式,地址) 商品(商品编号,商品名称,供应商,商品批号,商品规格,生产厂家,入库价格,零售价格,生产日期,备注,商品数量) w 客户和商品之间的联系为m:n的关系,将它们之间的联系转换为独立的关系模式。 商品(商品编号,商品名称,供应商,商品批号,商品规格,生产厂家,入库价格,零售价格,生产日期,备注) 客户(客户编号,客户姓名,性别,年龄,联系方式,地址) 购买(商品编号,客户编号,商品数量,零售价格,销售日期,联系方式) 第四章 物理结
16、构设计 4.1目的 w 掌握将数据库关系模式在相应的DBMS上实现的方法 4.2表的构建 w 供应商 CREATE TABLE gys (供应商编号 Char(4) Not null primary key, 供应商名称 Varchar(20) Not null, 供应商品数量 Varchar(20), 供应商地址 Varchar(4), 联系方式 Char(4)) 列名 数据类型 字符 允许空 供应商编号 Char 4 Checked 供应商名称 Varchar 20 Checked 供应商品数量 Varchar 20 Checke
17、d 供应商地址 Varchar 4 Checked 联系方式 Char 4 Checked w 采购员 CREATE TABLE cgy (采购员编号 Char(4) Not null primary key, 采购员姓名 Varchar(20) Not null, 地址 Varchar(20), 联系方式Varchar(4)) 列名 数据类型 字符 允许空 采购员编号 Char 4 Checked 采购员姓名 Varchar 20 Checked 地址 Varchar 20 Checked 联系方式 Varchar 4
18、 Checked w 商品 CREATE TABLE sp (商品编号 Char(4) Not null primary key, 商品名称 Varchar(20) Not null, 供应商 Varchar(20), 商品批号 Varchar(4), 商品规格 Char(4), 生产厂家 Varchar(20) 入库价格 Varchar(4), 零售价格 Varchar(4), 生产日期 Varchar(4), 备注 Varchar(20)) 列名 数据类型 字符 允许空 商品编号 Char 4 Checked 商品名称 Varchar
19、 20 Checked 供应商 Varchar 20 Checked 商品批号 Varchar 4 Checked 商品规格 Char 4 Checked 生产厂家 Varchar 20 Checked 入库价格 Varchar 4 Checked 零售价格 Varchar 4 Checked 生产日期 Varchar 4 Checked 备注 Varchar 20 Checked w 管理员 CREATE TABLE gly (管理员编号Char(4) Not null primary key, 管理员姓名 V
20、archar(20) Not null, 性别 Varchar(4), 部门 Varchar(20), 联系方式 Char(4), 地址 Varchar(20)) 列名 数据类型 字符 允许空 管理员编号 varchar 4 Checked 管理员姓名 varchar 20 Checked 性别 varchar 10 Checked 部门 varchar 10 Checked 联系方式 varchar 10 Checked 地址 varchar 20 Checked w 仓库 CREATE TABLE ck (仓库编
21、号Char(4) Not null primary key, 仓库名称 Varchar(20) Not null, 备注 Varchar(20)) 列名 数据类型 字符 允许空 仓库编号 Char 4 Checked 仓库名称 Varchar 20 Checked 备注 Varchar 20 Checked w 客户 CREATE TABLE gly (客户编号Char(4) Not null primary key, 客户姓名 Varchar(20) Not null, 性别 Varchar(4), 年龄 Varchar(4),
22、 联系方式 Char(4), 地址 Varchar(20)) 列名 数据类型 字符 允许空 客户编号 Char 4 Checked 客户姓名 Varchar 20 Checked 性别 Varchar 4 Checked 年龄 Varchar 4 Checked 联系方式 Char(50) 4 Checked 地址 Varchar(50) 20 Checked w 提供 CREATE TABLE tg (供应商编号Char(4) Not null primary key, 采购员编号 Varchar(20) Not nu
23、ll, 供应商品数量 Varchar(20), 联系方式 Char(4)) 列名 数据类型 字符 允许空 供应商编号 Char 4 Checked 采购员编号 Varchar 20 Checked 供应商品数量 Varchar 20 Checked 联系方式 Char 4 Checked w 采购 CREATE TABLE cg (商品编号Char(4) Not null primary key, 采购员编号 Varchar(20) Not null, 商品数量 Varchar(20), 商品价格Char(4), 采购日期Var
24、char(20)) 列名 数据类型 字符 允许空 商品编号 Char 4 Checked 采购员编号 Varchar 20 Checked 商品数量 Varchar 20 Checked 商品价格 Char 4 Checked 采购日期 Varchar 20 Checked w 整理 CREATE TABLE zl (商品编号Char(4) Not null primary key, 管理员编号 Varchar(20) Not null, 商品数量 Varchar(20)) 列名 数据类型 字符 允许空 商品编号 Ch
25、ar 4 Checked 管理员编号 Varchar 20 Checked 商品数量 Varchar 20 Checked w 管理 CREATE TABLE gl (管理员编号Char(4) Not null primary key, 仓库编号 Varchar(20) Not null, 部门 Varchar(20)) 列名 数据类型 字符 允许空 管理员编号 Char 4 Checked 仓库编号 Varchar 20 Checked 部门 Varchar 20 Checked w 存储 CREATE TABLE
26、 cc (商品编号Char(4) Not null primary key, 仓库编号 Varchar(20) Not null, 商品数量 Varchar(20)) 列名 数据类型 字符 允许空 商品编号 Char 4 Checked 仓库编号 Varchar 20 Checked 商品数量 Varchar 20 Checked w 购买 CREATE TABLE gm (商品编号 Char(4) Not null primary key, 客户编号 Varchar(4) Not null, 商品数量 Varchar(4), 零售价格
27、Char(4), 销售日期 Varchar(4), 联系方式 Varchar(4)) 列名 数据类型 字符 允许空 商品编号 Char 4 Checked 客户编号 Varchar 4 Checked 商品数量 Varchar 4 Checked 零售价格 Char 4 Checked 销售日期 Varchar 4 Checked 联系方式 Varchar 4 Checked 4.3索引的作用 w 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 w 可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
28、w 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 w 在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 w 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 4.4索引代码 w 为‘sp’表格的商品名称添加索引,代码如下: USE hkx go CREATE INDEX 商品名称ON dbo.sp(商品名称) w 为‘kh’表格的客户编号添加索引,代码如下: USE hkx go CREATE INDEX 客户编号ON dbo.kh(客户编号) w 为‘gly’表格的管理员编号添加索引,代码如
29、下: USE hkx go CREATE INDEX 管理员编号ON dbo.gly(管理员编号) 第五章 数据库完整性、安全性设计 5.1目的 w 掌握约束、默认、规则的创建方法 w 掌握存储过程、触发器的创建方法 w 掌握数据库安全性的设计方法,包括账户管理和权限管理 5.2数据库完整性设计 w 约束 约束名:为各表的主键 供应商表(gys):供应商编号; 采购员(cgy):采购员编号; 商品(sp):商品编号; 管理员(gly):管理员编号;仓库(ck):仓库编号; 客户(gly):客户编号;提供(tg):供应商编号 约束类型 主键约束(PRIMA
30、RY KEY)、唯一键约束(UNIQUE)、默认值约束(DEFAULT)、检查约束(CHECK)、外键约束(FOREIGN KEY) 约束的作用:保证插入数据的有效性。 代码 以PRIMARY KEY ,UNIQUE,DEFAULT,CHECK为例 primary key约束 CREATE TABLE gys (供应商编号 Char(4) Not null primary key, 供应商名称 Varchar(20) Not null, 供应商品数量 Varchar(20), 供应商地址 Varchar(4), 联系方式 Char(4)) Unqi
31、ue约束 CREATE TABLE cgy (采购员编号 Char(4) Not null primary key, 采购员姓名 Varchar(20) unique, 地址 Varchar(20), 联系方式Varchar(4)) Default约束 CREATE TABLE gly (客户编号Char(4) Not null primary key, 客户姓名 Varchar(20) Not null, 性别 Varchar(4) default '男', 年龄 Varchar(4), 联系方式 Char(4), 地址 Varchar(20))
32、Check约束 CREATE TABLE sp (商品编号 Char(4) Not null primary key, 商品名称 Varchar(20) Not null, 供应商 Varchar(20), 商品批号 Varchar(4), 商品规格 Char(4), 生产厂家 Varchar(20) 入库价格 Varchar(4), 零售价格 Varchar(4), 生产日期 Varchar(4) check (生产日期 between 1998 and 2001), 备注 Varchar(20)) w 默认 默认名:default 默认的绑定对象
33、列或用户定义的数据类型 默认的作用:在数据库中对存储在表的列或用户自定义数据类型中的值进行默认。 创建和绑定默认的代码 以性别为例: create default def_性别 as '男' go exec sp_bindefault 'def_性别', 'kh.[性别]' 以部门为例: create default def_部门 as '采购部' go exec sp_bindefault 'def_部门', 'gly.[部门]' w 规则 规则名:rule 规则的绑定对象:列或用户定义的数据类型 规则的作用:在数据库中对存储在表的列
34、或用户自定义数据类型中的值的规定和限制。 创建和绑定规则的要求: 以商品的生产日期为例: create rule 生产日期_rule as @生产日期>1998 and @生产日期<2001 exec sp_bindrule '生产日期_rule', 'sp.[生产日期]' 以客户年龄为例: create rule 年龄_rule as @年龄>25 and @年龄<35 exec sp_bindrule '年龄_rule', 'sp.[年龄]' w 存储过程 存储名:procedure 存储过程的作用:有特定的功能,可被调用,提高了程序的运行效率
35、 存储过程的代码 以购买信息为例: if exists (select name from hkx where name = '购买信息' and type='p') drop procedure 购买信息 go create procedure 购买信息 as select sp.商品编号,kh.客户编号,gm.商品编号,gm.客户编号,客户姓名 from sp,gm,kh where sp.商品编号=gm.商品编号and kh.客户编号=gm.客户编号 go 以购买信息为例: if exists (select nam
36、e from hkx where name = '存储信息' and type='p') drop procedure 存储信息 go create procedure 存储信息 as select sp.商品编号,ck.仓库编号,cc.商品编号,cc.仓库编号,商品名称 from sp,gm,kh where sp.商品编号=cc.商品编号and ck.仓库编号=cc.仓库编号 go w 触发器 触发器名:trigger 触发器作用:在执行语句事件时自动生效,用来同步更新数据。 触发器代码 以采购数量为例:
37、 create trigger tri_采购数量 on cg for insert,update as if exists (select * from inserted where 采购数量<100) begin print'采购量小于100' end 5.3数据库安全性设计 w 登录设计 为药房进销存系统设计数据库登陆账号:exec sp_addlogin 'hkx', '123', 为药房进销存系统设计Windows登录帐号:exec sp_grantlogi
38、n 'windows', '123' w 数据库用户设计 为数据库中windows账号添加数据库用户:exec sp_grantdbaccess 'hkx','billy' 删除数据库用户:exec sp_revokedbaccess 'billy' 创建特殊数据库用户:exec sp_grantdbaccess guest w 各个登录的权限设计 赋予登陆账号sa的用户select权限:grant select on sp to billy 赋予登陆账号sa的用户update权限:grant update on sp to billy 赋予登陆账号sa
39、的用户delete权限:grant delete on sp to billy w 各个数据库用户的权限设计 将sp表上的insert,update和delete授权于用户billy角色 grant insert,update,delete on sp to billy go 废除授予billy的关于sp表的insert,update和delete权限 revoke insert,update,delete on sp from billy go 拒绝用户billy角色在sp表上的insert,update和delete权限 deny insert, u
40、pdate, delete on sp to billy go 第六章 实训总结 6.1实训总结 一星期的实训已接近尾声,这次的实训内容是设计一个进销存数据库系统,刚开始时,感觉之前学的已忘的差不多了,也担心这个实训内容相当的困难,但一天天下来,在不断摸索的同时,也回顾了之前的知识。 这次实训,从系统的组织结构图、功能结构图,到E-R图的设计,再到数据库的设计,综合应用了数据库、SQLServer2005等知识,让我们所学的知识得到了充分的延伸与拓展,同时,也提高了我们的综合实践能力。 第一天的系统组织图与功能图的设计,让我有些摸不着边,无从着手,通过资料的查找之后,最终确
41、立了主题:药品进销存系统。在第二天的E-R图设计中,实体,属性与联系的设计,难免会有一些碰壁,分E-R图和全局E-R图的建立,遇到的问题又增加了许多,实体与实体之间的联系,实体的属性,让人难以入手,但通过网上的搜寻,老师同学的指导,这些问题也随之迎刃而解。接下来就完全沉浸在数据库的建设中,数据库表的建立,索引的创建,约束、默认、规则、存储过程、触发器的创建,因为对概念的不清楚,加上对代码的不熟悉,操作起来相当困难,经过网上资料的查找,对书本知识的回顾,慢慢地对概念清晰了,代码也熟练了,这些问题也很快被解决了。 其实,不管我们做什么事情,我们都应该想清楚,首先干什么,其次干什么,有了一个合理的规划,我们做起来也就比较的有了方向,有了目标,再向目标去奋斗,这样我们才能更好的把握自己,使自己更好的发展。 20






