药品存销信息管理系统全
信息工程学院
《数据库课程设计》论文
题目:药品存销信息管理系统学号:***********
专业班级:计算机科学与技术103
姓名:*****
指导老师:******
完成日期:2012年01月13日
药品存销信息管理系统数据库设计
****
(信息工程学院计算机科学与技术10级3班)
摘要
本次课程设计是药品存销信息管理系统,伴随着社会的复杂化,传统的“一支笔,一本帐簿”的药品销售管理方式也慢慢的无法适应形势的变化。随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。因此设计药品存销信息系统是当务之急,本系统包括药品采购,药品存储,药品销售。药品采购包括采购员进货,采购员退货。药品存储包括仓库存储以及仓库管理员管理仓库。药品销售包括顾客买药与顾客退药。本系统包括几个视图来使数据库使用者快速的查询想要得到的信息,本系统包括几个PL/SQL语句块,还包括几个触发器,使得数据得到同步修改,使数据库中的数据更加合理。
关键字:数据库;经销存;药品管理系统
目录
目录............................................................................................... - 0 -
1.需求分析 ..................................................................................... - 3 -
1.1需求分析阶段处理对象及组织................................................. - 3 -
1.2信息处理及系统功能 ............................................................. - 3 -
................................................................... 错误!未定义书签。2.数据库结构设计 .......................................................................... - 5 -
2.1 概念设计............................................................................ - 5 -
2.2 逻辑设计............................................................................ - 6 -
2.2.1 建立关系模式 ............................................................ - 6 -
2.2.2 关系模式规范化处理................................................... - 7 -
以上关系模式中的各实体和联系之间不存在非主属性对主属性的
部分函数依赖,也不存在传递函数依赖,已经达到了3NF。... - 7 -
2.2.3 用户子模式建立 ......................................................... - 7 - 3.数据库物理设计......................................................................... - 8 -
3.1 物理设计阶段目标和任务 ...................................................... - 8 -
3.2数据存储方面....................................................................... - 8 -
3.2.1 建立索引的原则 ......................................................... - 8 - 4.数据库实施与测试....................................................................... - 9 -
4.1 数据库实施......................................................................... - 9 -
4.1.1 数据库及数据库对象建立............................................. - 9 - 5.总结........................................................................................ - 10 - 6.附录........................................................................................ - 11 -
附录1 : ..................................................................................... - 11 - 附录2 .................................................................................... - 15 - 附录3 .................................................................................... - 20 -
引言
随着全球信息技术的飞速发展,尤其是因特网的出现和普及,企业和决策都发生了根本的改变。采用信息技术促进、改造药店的生产、经营、管理,有效采集和处理信息,增强企业决策的有效性,适应全球发展的要求,将成为企业发展的必由之路。信息管理系统已经成为现代企业的一个重要标志和衡量企业综合实力的重要组成部分。但是,信息管理系统的开发却非常困难。开发一个成功的企业信息管理系统,不仅要有方方面面的专业知识,还要充分分析企业内部、外部环境的变化和关系,以及在信息管理系统开发过程中所涉及的设备、技术上的复杂性。这就需要系统开发者不断总结经验,不断探索更好的方法和技术。
如今药品无论在任何时候都是一个国家最重要的东西,也是对一个人最需要的东西,药品管理正处于一个高速发展的时期。药品的信息在供应商与销售部和顾客之间大量的流通,因此,建立一个合适的数据库来管理这些数据是必不可少的。这样药品存销信息管理系统就这样诞生了,它可以高效的来管理这些数据,是药品高效的发货和供应。
本次数据库设计严格按照书上的要求和设计数据库步骤,从需求分析,概念设计,逻辑设计,物理设计,到数据库最后的建立、运行。
1.需求分析
主要包括内容:处理对象及组织;信息处理及系统功能;数据库系统性能需要,数据库系统开发环境需求等。在阐述信息及其处理过程时,要辅助业务流程图、数据流程图及数据字典。对上述三个问题可以以附录的形式详细罗列,但正文中必须指明做了哪些业务流程图、数据流程图和数据字典的规模。
1.1需求分析阶段处理对象及组织
(1)熟悉业务并绘制业务路程图;
(2)根据业务流程图明确有哪些数据流动,绘制数据流程图;
(3)建立数据字典,其中包括数据项、数据结构、数据流、数据存储、处理过程等。
1.2信息处理及系统功能
1.2.1数据流程图
药品存销信息管理系统数据流程图如下
(3)第一层数据流程图
(2)第二层数据流程图——进货
图1-1第一层数据流程图
图1-2 进货数据流程图(4)第二层数据流程图——销售
图1-3 销售数据流程图
(5)第二层数据流程图——存储
图1-4 存储数据流程图
包含数据项、数据结构、数据流、处理逻辑、数据存储定义(详见附录1)。
2.数据库结构设计
2.1 概念设计
阶段要求:
(1)能真实、充分地反映现实世界,包括事物与事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;
(2)易于理解,因此可以用它和不熟悉计算机的用户交换意见;
(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;
(4)易于向关系、网状、层次等各种数据模型转换。
2.2.1 分E-R图的建立
建立分E-R图的思想:
对需求分析阶段收集到的数据进行分类、组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(1:1,1:n,m:n),设计分E-R图;参照数据流程图画出分E-R图
(1)进货时的分E-R图
图2-1 进货时的分E-R图
(2)销售时的分E-R 图
(3)盘存时的分E-R 图
2.1.2 全局/整体E-R 图 1.每次集成局部E-R 图是,分两步走
(1)合并。解决各分E-R 图之间的冲突,将各分E-R 图合并起来生成初步的E-R 图。
(2)修改和重构。消除不必要的冗余。 总E-R 图
2.2 逻辑设计
概念设计阶段是独立于任何一种数据模型的,而逻辑设计阶段则与现实结合起来,逻辑设计的任务就是将概念设计阶段设计好的基本E-R 图转换为与项目所支持的数据模型相符合的逻辑结构。具体任务包括将E-R 图转换成关系模型、模型优化、数据库模式定义、用户模式设计。
2.2.1 建立关系模式
转化规则:一个实体型转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。一个1:1联系可以转换为一个独立关系模式,也可以与任意一端关系模式合并;一个1:N 联系可以转换为一个独立关系模式,也可以与n 端实对应的关系模式合并;一个M :N 联系转换为一个独立关系模式,具有相同码的关系模式可以合并 根据以上转化规则可得
供应商(供应商的编号,供应商的名称,供应商的地址,供应商的联系电话) 供应商的编号->供应商的名称,供应商的编号->供应商的地址,供应商的编号->
图2-2销售时的分E-R 图
图2-3盘存时的分E-R 图 图2-4 总E-R 图
供应商的联系电话
药品(药品的编号,药品名称,药品重量,药品类别,药品单价,药品生产日期,药品保质期)
药品的编号->药品名称,药品的编号->药品重量,药品的编号->药品类别,药品的编号->药品单价,药品的编号->药品生产日期,药品的编号->药品保质期
顾客(顾客姓名,顾客编号,顾客年龄,顾客联系电话,顾客地址,顾客邮编)顾客编号->顾客姓名,顾客编号->顾客年龄,顾客编号->顾客联系电话,顾客编号->顾客地址,顾客编号->顾客邮编
仓库(仓库编号,仓库当前库存量,仓库最大库存量,仓库最小库存量)
仓库编号->仓库当前容量,仓库编号->仓库最大容量,仓库编号->仓库最小容量工作人员(人员编号,人员名称,人员电话,人员地址,人员类型)
人员编号->人员名称,人员编号->人员电话,人员编号->人员地址,人员编号->人员类型
销售员售货(人员编号,顾客编号,货物编号,购买数量,销售日期)
(人员编号,顾客编号)->货物编号,(人员编号,顾客编号)->购买数量
(人员编号,顾客编号)->销售日期
顾客退货(人员编号,顾客编号,退货数量,退货日期)
(人员编号,顾客编号)->退货数量,(人员编号,顾客编号)->退货日期
采购员进货(供应商编号,采购员编号,进货数量,进货日期)
(供应商编号,采购员编号)->进货数量,(供应商编号,采购员编号)->
进货日期
采购员退货(供应商编号,采购员编号,退货数量,退货日期)
2.2.2 关系模式规范化处理
以上关系模式中的各实体和联系之间不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。
2.2.3 用户子模式建立
表2-1 关系外模式
序号视图名称作用备注
1 price 查询各种商品的单价
2 StorageNow 查询目前仓库货物数量
3 Workweight 查询采购员的采购信息
4 worksale 查询售货员买了多少东西
2.2.4 关系模式逻辑结构定义
详细的逻辑结构定义见附录2
3.数据库物理设计
3.1 物理设计阶段目标和任务
数据库的物理设计是为逻辑数据模型选取一个最合适应用需求的物理结构的过程,在这个阶段中需要完成的任务是:
(1) 确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2) 对物理结构进行评价,评价的重点是时间和空间效率。
3.2数据存储方面
3.2.1 建立索引的原则
建立索引一般有以下三个原则:
(1) 如果一个或一组属性经常在查询条件中出现,则考虑在这个属性上建立索引。
(2) 如果一个经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。
(3) 如果一个或一组属性经常在连接操作的连接条件中出现,则考虑在这个属性上建立索引。
表3.1 索引
所在表名索引名称索引类型建立索引的项
供应商信息表supplier_index 唯一SupNumber
药品信息表goods_index 唯一Gnumber
客户信息表customer_index 唯一Cusnum
4.数据库实施与测试
主要包括数据库实施和测试两个部分。
4.1 数据库实施
4.1.1 数据库及数据库对象建立
主要包括:数据库、基本表、视图、索引、触发器以及存储过程;
对于具体的DDL语句以及相关代码,见附录3。
(1)建立索引:
Create unique index supplie_index on Supplier(SupNumber);
Create unique index goods_index on Goods(Gnumber);
Create unique index customer_index on Customer(Cusnum);
(2)创建的视图如表4.1 所示
表4.1 视图
序号视图名称作用备注
1 price 查询各种商品的单价
2 StorageNow 查询目前仓库货物数量
3 Workweight 查询采购员的采购信息
4 worksale 查询售货员买了多少东西
(3)创建的存储过程如表 4.2所示:
表4.2 存储过程
(4)创建的触发器如表 4.3 所示:
表4.3 触发器
编号 触发器名 作用
T1 book 当向订货单插入一条数据时修改仓库数据 T2
return
采购员退货触发器
T3
DeCustomer
删除顾客信息的同时删除其他表中关于此人的
信息
4.1.2 数据入库
将10张表导入到数据库中
5.总结
十天数据库实习已经结束,实习期间有三门重要的考试,使我们一边应付考试,一边做实习,晚上还要上通宵自习,感觉真的很累,有很多问题感到很难解决,还好,这些问题在不断的思考中被解决了。
这次数据库实习让我学到了很多的东西,原来上课的时候总感到有些不足,因为自己不知道数据库到底在现实生活中有什么用处,因此感觉数据库与现实生活没有多大联系。通过这次数据库实习让我了解了数据库的重要性,知道了数据
编号 存储过程名称 作用
P1 SupPhone 输入一个供应商编号查询其电话号码 P2 goodsprice 查询哪些药品大于20 P3 Storagenow 输入仓库号查询其剩余货物量 P4 worker_Insert 向员工基本信息表插入一个元组 P5 Book_Insert 向订单基本信息表插入一个元组 P6 sale_Insert 向销售单基本信息表插入一个元组 P7 Return_Insert 向退货单基本信息表插入一个元组 P8
Person_delete
从员工基本信息表中删除一个元组
库在现实生活中到底怎么用。原来看课本上的数据库设计步骤总是不能理解,不知道应该怎么用,通过本次实习,使我深刻的理解了每一个步骤到底是干什么的,怎么干,应该得到哪些东西。
通过本次实习,我学习了很多数据库开发的技巧,例如如何画数据流程图,然后怎样从数据流程图中抽取出实体,如何画E-R图等等,这些东西都为自己开发数据库提供了很多技巧。这也让我明白了团里合作的重要性,当自己遇到不懂得地方时,通过与同学和老师的交流,使得我对一些问题得到了更加深刻的理解,使得我能够按时完成本次数据库实习。
非常感谢学院能够安排本次数据库实习,同时感谢老师细心,耐心详细的讲解,没有他们本次数据库实习不可能圆满结束。
6.附录
附录1 :
数据字典:
(1)数据项:
表6-1
DI-1 SupNumber 供应商的编号varchar(20)
DI-2 SupName 供应商的名称varchar(20)
DI-3 SupAddress 供应商的地址varchar(20)
DI-4 SupPhone 供应商的联系电话varchar(20)
DI-5 Gnumber 药品的编号varchar(20)
DI-6 Gname 药品名称varchar(20)
DI-7 Gweight 药品重量float
DI-8 Gtype 药品类别varchar(20)
DI-9 Gprice 药品单价float
DI-10 Gdate 药品生产日期date
DI-11 Gstodate 药品保质期int
DI-12 Cusname 顾客姓名varchar(20)
DI-13 Cusnum 顾客编号varchar(20)
DI-14 Cusage 顾客年龄int
DI-15 CusPhone 顾客联系电话varchar(20)
DI-16 CusAddress 顾客地址varchar(20)
DI-17 Cusnumber 顾客邮编varchar(20)
DI-18 Gthdate 顾客退货时间date
DI-19 Gjhdate 顾客购药日期date
DI-20 Jhdate 进货日期date
DI-21 Thdate 退货日期date
DI-22 StorageSno 仓库编号int
DI-23 StorageNow 仓库目前库存int
DI-24 StorageMin 仓库最小容量int
DI-25 StorageMax 仓库最大容量int
DI-26 StoragePho 仓库联系电话varchar(20)
DI-27 mannum 人员编号varchar(20)
DI-28 manname 人员名称varchar(20)
DI-29 manPho 人员电话varchar(20)
DI-30 manAdd 人员地址varchar(20)
DI-31 mantype 人员类型varchar(20)
(2)数据结构
表6-2
数据结构编号数据结构名数据结构含义组成
DS-1 Supplier 供应商SupNumber
SupName
SupAddress
SupPhone
DS-2 Customer 顾客Cusname Cusage
CusPhone
CusAddress
Cusnumber
DS-3 Goods 货物Gnumber Gname
Gtype Gweight
Gprice Gdate
DS-4 Storage 仓库StorageSno
StorageMax
StoragePho
StorageAdm
DS-5 StorageManager 仓库管理员Stonumber
Stoname
StoAddress
StoPhone
DS-6 Delvebook 发货单SupName
Gnumber Gname
Gtype Gweight
Gprice Gdate
DS-7 Orderbook 订货单SupNumber
SupName
Purmannum
Gnumber Gweight
Jhdate
DS-8 Returnbook1 退货单SupNumber
Purmannum
Gnumber Gweight
Thdate
DS-9 Salebook 顾客购药单Salemannum
Cusname
Gnumber Gname
Gtype Gweight
Gprice Gjhdate DS-10 Rerurnbook2 顾客退货单Salemannum
Cusname
Gnumber Gname
Gtype Gweight
Gprice Gthdate DS-11 Deposit 仓库库存StorageSno
Stonumber
Gnumber Gweight DS-12 Saleman 售货员Salemannum
Salemanname
SalemanPho
SalemanAdd
DS-13 Purchase 采购员Purmannum
Purmanname
PurmanPho
PurmanAdd (3)数据流
表6-3
数据流编号数据流名
称
简述数据流来
源
数据流去
向
数据流组
成
数据流量高峰流量
F1 采购部订
货单药店向供
应商提供
药品需求
单
采购部供应商商品编码
+商品名
称+进货
量+商品
进价
15次/月30次/月
F2 采购发货
单供应商发
出的收货
单
供应商检验货物
的模块
商品编码
+商品名
称+进货
量+商品
进价
15次/月30次/月
F3 库存清单库存帐目
共采购部
参考的单
据库存账目采购部差
库模块
商品编码
+商品名
称+库存
量
30次/月60次/月
F4 采购部退
货单采购部向
提供商发
检验货物
的模块
供应商商品编码
+商品名
5次/月10次/月
出的退货单称+退货量
F5 顾客购物
单顾客购买
药物是开
的订单
销售人员顾客商品编号
+商品名
称+购买
量+商品
售价+购
买日期
60次/月100次/
月
F6 顾客退货
单顾客将要
退药的单
据发给销
售部
顾客退货
模块
确认退货
模块
商品编号
+销售人
员编号+
购买量+
退货日期
10次/月20次/月
F7 不合格单采购部检
查到的不
合格药品
的单子检验货物
的模块
退货模块药品编号
+药品重
量+退货
日期
5次/月10次/月
F8 合格单检验货物
模块填写
的合格药
品的单据检验货物
的模块
入库管理
模块
药品编号
+药品名
称
10次/月20次/月
F9 入库单库管理员
填写的要
入库药品
的清单库管员仓库药品编号
+药品数
量
15次/月30次/月
(4)处理逻辑
表6-4
处理逻辑编号处理逻辑
名称简述
输入的数
据流处理
输出的数
据流处理频率
P1.1 采购查库采购部采
购依据
F1库存清
单
根据清单
确认采购
商品
F2采购订
货单30次/月
P1.2 验货采购部检
验来货
F3采购发
货单
根据发货
单检验商
品
F4不合格
单,F6合格
单15次/月
P1.3 采购退货检验不合
格退去
F4不合格
单确认退货
F5采购退
货单10次/月
P1.4 入库检验合格
入库
F6检验合
格单
登记库存
帐目F7入库单15次/月
P2.1 销售销售部向
顾客卖货
F9顾客订
单导购提货F10销售单1000次/月
附录2
基本表的建立:
货物表6-5
属性名类型取值范围是否为主键是否可为空
Gnumber varchar(20) Y N
Gname varchar(20) N N Gweight Float >0 N Y
Gtype varchar(20) N Y
Gprice Float >0 N Y
Gdate Date N Y Gstodate Int >0 N Y
供应商表6-6
属性名类型取值范围是否为主键是否可为空
SupNumber varchar(20) Y N
SupName varchar(20) N Y
SupAddress varchar(20) N Y
SupPhone varchar(20) N Y
仓库表6-7
属性名类型取值范围是否为主键是否可为空StorageSno Int >0 Y N StorageMin Int >0 and <1000 N Y StorageNow Int >=0and<10000 N Y StorageMax Int >0 N Y
Mannum Varchar(20) N N
Jhdate Date N N
工作人员表6-8
属性名类型取值范围是否为主键是否可为空
mannum varchar(20) Y N
manname varchar(20) N N
manPho varchar(20) N Y manAdd varchar(20) N Y
mantype varchar(20) N N
顾客表6-9
属性名类型取值范围是否为主键是否可为空
Cusname varchar(20) N N
Cusage Int >0 N Y Cusnum Varchar(20) Y N CusPhone varchar(20) N Y CusAddress varchar(20) N Y
Cusnumber varchar(20) N Y
仓库货物表6-10
属性名类型取值范围是否为主键是否可为空StorageSno Int Y N
Gnumber varchar(20) Y N StorageNow Int >0 N N
订货单表6-11
属性名类型取值范围是否为主键是否可为空SupNumber varchar(20) Y N mannum varchar(20) Y N
Gnumber varchar(20) Y N Gweight Float >0 N Y
Gprice Float >0 N Y
Jhdate Date N Y
退货单表6-12
属性名类型取值范围是否为主键是否可为空
SupNumber varchar(20) Y N mannum varchar(20) Y N
Gnumber varchar(20) Y N Gweight Float >0 N Y
Thdate Date N Y
销售员售货表6-13
属性名类型取值范围是否为主键是否可为空mannum varchar(20) Y N Gnumber varchar(20) Y N
Cusnum varchar(20) Y N Gweight Float >0 N Y
Gprice Float >0 N Y
Gjhdate Date N Y
顾客退货表6-14
属性名类型取值范围是否为主键是否可为空mannum varchar(20) Y N Gnumber varchar(20) Y N Cusnum varchar(20) Y N Gweight Float N Y Gthdate Date N Y
2.SQL语言实现
创建货物表
create table Goods
(
Gnumber varchar(20) primary key,
Gname varchar(20) not null,
Gweight float check (Gweight>0),