药品进销存管理系统数据库设计.doc

上传人:土8路 文档编号:10234328 上传时间:2021-05-01 格式:DOC 页数:19 大小:82.50KB
返回 下载 相关 举报
药品进销存管理系统数据库设计.doc_第1页
第1页 / 共19页
药品进销存管理系统数据库设计.doc_第2页
第2页 / 共19页
药品进销存管理系统数据库设计.doc_第3页
第3页 / 共19页
药品进销存管理系统数据库设计.doc_第4页
第4页 / 共19页
药品进销存管理系统数据库设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《药品进销存管理系统数据库设计.doc》由会员分享,可在线阅读,更多相关《药品进销存管理系统数据库设计.doc(19页珍藏版)》请在三一文库上搜索。

1、目录 1. 摘要和需求分析32. 数据库结构设计2.1 概念设计全局/整体E-R图72.2 逻辑设计2.2.1建立关系模式92.2.2用户子模式建立92.2.3关系模式逻辑结构定义103. 数据库物理设计 3.1 索引10 3.2 触发器10 3.3 存储过程114.数据库入库与测试 4.1数据入库12 4.2 数据库测试12参考文献12附录 SQL语句1 基本表132 视图143 索引154 触发器155 存储过程18药品进销存管理系统数据库设计摘要:随着计算机技术、通信技术和网络技术的迅猛发展,人类社会已经进入了信息化时代。信息资源成为最重要、最宝贵的资源之一,数据库技术已经成为信息社会中

2、对大量数据进行组织与管理的信息系统核心技术和网络信息化管理系统的重要基础。是一种计算机辅助管理数据的方法,它研究如何组织和存储数据,如何高效地获取和处理数据。是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论来实现对数据库中的数据进行处理、分析和理解的技术。目前中小型的药店营业规模不断扩大,药品的数量和种类不断增加,人工管理的难度也越来越大,如果开发出药品进销存管理系统,通过使用计算机对物质信息进行管理,可以很大程度上方便管理人员对药品的管理,实现管理的高效化和统一化。从而给工作带来了巨大的方便,给药店带来了巨大的经济利益。1. 需求分析需求分析阶段就是分析用

3、户的需求,这也是设计数据库的第一步。药品进销存管理系统是中小型药店管理人员方便药店的各个流程的工作为目的的。需求分析这个阶段,主要确定包括业务流程,数据流程,以及要实现的流程和目标,通过数据的分析,可以得到市场的信息,便于管理人员提高,优化管理水平。让销售更加方便,节约成本,带来经济效益。1.1.业务流图包括药品的采购,库存管理和销售,主要是阐述整个药品的进存的流水作业过程。如图1-1所示:存单提货提货单发货单发货提货单缺货查看销售部客户订货订货单提货单提货存档库存单退货单退货仓库采购员采购缺货单缺货供应厂家发货发货单验货入库药店采购退货单退货入库单入库1.2 .数据流程图是反映 药店作业过程

4、的数据去向和流向。通过数据流程图,抽象现实的数据到药品进销存的物理模型。再根据这个物理模型抽象出信息流,将物理模型转化成逻辑模型,反映信息在系统中的流动,处理,存储情况。流程图分为顶层数据流图,第一层数据流图,第二层数据流图。E1供应厂家P6进销存E2客户S1库存台帐图1-2 顶层数据流程图E1 供应厂家P1进货P4盘存P3报损P2销售E2客户S1 库存台帐E3库房图1-3 第一层数据流程图E2 客户P2.1 销售S1 库存合账P2.2 确认退货P2.3 退货S2 收支帐务图1-4第二层数据流程图 (销售) 库房 E3P3.1 库房报损S1 库存台帐P2 销售P3.2 销售报损图1-5 第二层

5、数据流图 (库存管理)数据库结构设计 主要分为概念设计和逻辑设计两个部分。2.1 概念设计1. E-R图设计如下:供应存储药品仓库供应厂家退货购买客户属性如下所示:供应厂家(供应厂编号,供应厂名称,供应厂厂址,供应厂电话,供应厂网站)药品(药品编码,药品商品名,通用名,药品分类,药品剂型,生产厂家,单价,生产日期,保质期)仓库(仓库编号,仓库类别,仓库地址)职员(职工编号,姓名,性别,年龄)客户(客户编号,名称,性别,电话)供应(供应量)购买(购买量)退货(退货原因,退货数量)2.2逻辑设计逻辑设计的任务是把概念结构设计好的基本E-R图转为与选用DBMS产品所支持数据模型相符合的逻辑结构。药品

6、管理系统的设计采用关系模型。将E-R图中的实体的属性和实体型之间的联系转化为关系模式。对于实体型间的联系有以下不同的情况:(1) 一个1:1联系可以转换为一个独立的关系模式,也可以以任一端对应的模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系的本身属性都转换为关系的属性。(2) 一个1:n联系可以转换为一个独立的关系模式,也可以与任一端对应的模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系的本身属性都转换为关系的属性。(3) 一个m:n联系转换为一个关系模式,与该联系相连的个实体的码以及联系本身的属性转换为关系属性,各实体的码组成关系的码或关

7、系的码的一部分。药品管理系统涉及的关系模式的几种情况主要来自以下几种联系 :供应厂家和药品信息的关系(m:n),药品和仓库的关系(m:1),药品通过销售部门和客户建立的联系(m:n)。2.2.1 建立关系模式药品进销存系统涉及的关系主要有:供应厂家的药品为m:n(多对多)的关系,将它们之间的联系转化为独立的关系模式。仓库和药品的关系为1:n(一对多),将其之间的联系与n端实体合并。职工和仓库的关系为1:n(一对多)的关系,也将其之间的联系与n端实体合并。客户和药品之间的联系为m:n(多对多)的关系,将它们之间的联系转换为独立的关系模式。具体的转换如下图所示,主键或外键已标注:供应厂家(供应厂编

8、号,供应厂名称,供应厂厂址,供应厂电话,供应厂网站)药品(药品编码,药品商品名,通用名,药品分类,药品剂型,单价,生产日期,保质期,库存量,报损量)仓库(仓库编号,仓库类别,仓库管理人员)管理(职工号,仓库号)客户(客户编号,名称,性别,电话)供应(供应厂家编号,药品编号,供应量)销售(药品编号,客户编号,销售量)退货(药品编号,客户编号,退货原因,退货数量)2.2.2 用户子模式建立根据需求分析研究建立满足不同需求的用户子模式,各个子模式的建立在更大程度上方便数据操作。用户子模式的定义如表所示。具体实现过程见附录3-2 用户子模式定义编号 用户子模式(VIEW) 作用V-1 vi suppl

9、ier方便查询药品供应商信息V-2 vi medicine方便查询各类药品的信息V-3 vi storehouse 方便查询仓库基本信息V-4 vi storage方便查询库存信息V-5 vi sale方便查询药品销售信息2.2.3关系模式逻辑结构定义药品进销存管理系统涉及的8张表,分别是 Supplier, Medicine, Storehouse, Customer, Buy, Storage, Sale, Back。如下表所示:具体定义见对其对应附录。 编号 基本表定义 安全性和完整性T-1 Supplier 见附录T-2 Medicine 见附录T-3 Storehouse 见附录T-

10、4 Customer 见附录T-5 Buy 见附录T-6 Storage 见附录 T-7 Sale 见附录T-8 Back 见附录3.数据库物理设计数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖与选定的数据库管理系统。为给一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构的过程,就是数据库的物理设计。这一阶段任务是确定数据库的物理结构,并不断的进行优化处理,主要建立索引,触发器,存储过程。3.1 索引建立索引是加快查询的有效手段。建立的索引如下表所示。编号 名称 定义 备注1-1 In SupName 见附录1-2 In MedNo 见附录1-3 In CusName

11、 见附录3.2触发器 触发器是用户定义在关系表上的一类由事件驱动的过程。触发器的定义可以更加便捷的实现数据的操作,增加数据操作的灵活性,对数据有更大的控制能力。如进货量,药品的入库保值期的检测。建立的触发器见下表。编号 触发器名称 定义 作用T-1 tri med1 见附录 限制更新药品保质期大于6个月T-2 tri med2 见附录 限制更新药品进价不小于1元T-3 tri med Date 见附录 限制过期药品不能插入T-4 tri cus1 见附录 限制将Sale表的购买量小于10的改为10T-5 tri acc 见附录 限制某一药品仓库存量不大于400T-6 tri cus2 见附录

12、限制删除C-4020客户的退货记录T-7 tri buy1 见附录 限制采购量更新量不小于1003.3存储过程存储过程可以实现数据库操作的增删改功能,在执行时需要调用。药品的进存销过程部分存储过程如下所示。编号 存储过程名称 定义 作用P-1 pro sel sup 见附录 查询供货商信息P-2 pro sel med1 见附录 查询某一药品生产日期P-3 pro sel med2 见附录 查询呼吸系统药物P-4 pro upd med3 见附录 更新五官科药品保质期P-5 pro sel sale1 见附录 查询中草药的销售量P-6 pro sel back1 见附录 查询某种退货药品的退货

13、量P-7 pro add sup 见附录 插入一条供应商信息P-8 pro add med 见附录 插入一条药品信息P-9 pro add cus 见附录 插入一条客户信息P-10 pro del med 见附录 删除一条药品记录P-11 pro del back见附录 删除一条退货信息P-12 pro order sale见附录 按药品销量排序4.数据入库与测试4.1.1 数据入库各个主要数据表如药品信息,供应厂家信息记录在20条以上,经过整理收集在EXCEL中,设置所需格式用批量导入的方式进行导入到数据库中。先导入基本表,再导入关系表,成功证明导入后的数据表可以打开,导入失败要检验是否符合

14、完整性和逻辑要求。进行修改重新导入。4.1.2 数据库测试 数据库测试是对建立的数据库及数据库对象进行测试。设计的测试案例主要有基本信息表数据的查询,插入,删除和更新操作。插入不满足约束条件的数据以检测触发器触发,基本操作都是以存储过程的形式实现代码的封装,执行时调用存储过程。 参考文献【1】 萨师煊 王珊 数据库系统概论(第四版) 北京 高教出版社 【2】附录 sql 语句1 基本表Create database DrugstroeCreate table Supplier(Supno char(10) primary key,Supname char(40) not null,Supadd

15、r char(10),Suptel char(15),Supnet char(20));Create table medicine(Medno char(10) primary key,Medname char(20) not null,Medtong char(20)not null,Medkind char(10),Medtype char(10),Medpri float,Meddate char(10),Medexp char(10);Create table customer(Cusno char(10) primary key,Cusname char(10) not null,C

16、ussex char(2) check(cussex in(man, woman),Custel char(15) not null);Create table buy(Supno char(10),Medno char(10),Buyqua smallint,Primary key(supno, medno),Foreign key(supno) references supplier(supno),Foreign key(medno)references medicine(medno);Create table storage(Medno char(10),Stono char(10),S

17、toqua int,Lostqua int,Primary key (stono,medno),Foreign key (stono) references storehouse (stono),Foreign key(medno) reference medicine (medno);Create table sale(Medno char(10),Cusno char(10),Salqua int,Foreign key(medno) references medicine (medno),Foreign key(medno) reference customer (cusno);Crea

18、te table back(Medno char(10),Cusno char(10),Backsake char(40),Backqua int,Foreign key(medno) references medicine (medno),Foreign key(cusno) references customer (cusno);2.视图-建立视图Create view vi_supplierasSelect supnoFrom suppliercreate view vi_medicineasselect mednofrom medicineCreate view vi_stroehou

19、seasSelect stonoFrom storehouseCreate view vi_storageasselect stonofrom storagecreate view vi_saleasselect medname 药名,Salequa销售量from medicine, salewhere medicine.medno = sale.mednoorder by salequa desc3.索引Create nonclustered index in_supnameOn supplier (supname)Create nonclustered index in_mednoOn m

20、edicine (medno)Create nonclustered index in_cusnameOn customer(cusname)2. 触发器触发器的建立-创建限制插入药品保质期大于6个月Create triger tri_med1On medicineAfter insert ,updataAsIf exists(Select medexpFrom medicineWhere medexp 6)begin print 保质期必须大于6个月 rollbackend 限制更新的药品进价不小于1元,小于一元的改为1元create trigger tri_med2on medicinea

21、fter insert ,updateas declaremedno char(10),medipri floatSelectmedno=medno,medipri=mediprifrom insertedifmedipri medexp)BeginPrint药品已过期Rollbackend-限制将表的购买量小于10的改为10Create trigger tri_cus1On saleFor updateAsIf updateasif update (salequa)if exists( Select*From inserted join deleted on inserted.medno =

22、 deleted.mednoWhere inserted.salequa = 10And deleted.salequa 400Print 存储量大于400-限制删除C-4020客户的退货记录Create trigger tri_cus2On backAfter deleteAs ifExists( select*From deletedWhere cusno = C-4020)beginprint删除记录end -限制采购量更新量不小于100Create trigger tri_buy1On buyFor insert, updateasif exist(select*from insert

23、edwhere buyqua 100) beginprint 采购量小于100end5存储过程-建立存储过程-查询供货商信息Create procedure pro_sel_supasselect *from supplier-测试执行结果Execute pro_sel_sup-查询药品信息-create pro pro_medAsSelect *medicine-查询某一药品生产日期Create pro pro_sel_medl medname char(20)AsSelect medname药品名, meddate 生产日期From medicineWhere medname = medn

24、ame测试执行结果(带参数)Exec pro_sel_med1护彤颗粒-查询呼吸系统药Create proc pro_sel_med2AsSelect medno编号, medname 药品名称, medtong 通用名 from medicineWhere medkind=呼吸系统药 -测试执行结果Exec pro_sel_med2-更新五官科药品保质期Create proc pro_upd_med3AsUpdate medicineSet medexp = medexp + 12Where medkind = 五官科药-测试执行结果Exec pro_upd_med3-查询中成药的销售量Cr

25、eate proc pro_sel_saleAsSelect medicine药名, salequa 销量From medicine, saleWhere medicine.medno = sale.medno and medkind =中成药-测试执行结果Exec pro_ sel_sale-查询某种原因的药品的退货量Create proc pro_sel_back backsake char(40)As Select medname 药名,backqua 退货量From medicine, backWhere medicine.medno = back.medno and backsake

26、-测试执行结果Exec pro_sel_back 过期Exec pro_sel_back 数量有误-插入一条药品信息Create proc pro_add_medmedno char(10),medname char(20),medtong char (20),medkind char (10),medtype char (10),medipri float,meddate datetime,medexp intAsInsert into medicineValues(medno, medname,medtong,medking,medtype,medipri,meddate,medexp)-

27、测试执行结果 Exec pro_add_med m-2030, 好娃娃, 小儿氨酚烷胺颗粒, 呼吸系统药, 颗粒剂, 12, 2010-2-3, 24Exec pro_med-插入一条客户信息Create proc pro_add_cuscusno char(10),cusname char(20),cussex char(2),custel char(15)AsInsert into customerValues (cusno, cusname, cussex,custel)-测试执行结果Exec pro_add_cusC-4030, 张小铭, 男, 15255364267-删除一条退货信息

28、Create proc pro_del_backmedno char(10)As deleteFrom backWhere medno = medno-测试执行结果Exec pro_del_back m-2001-删除一条药品记录Create proc pro_del_medmedicine char(20)As deleteFrom medicineWhere medname = mednameExec pro_del_med 好娃娃-按销售量排序Create proc pro_order_saleAsSelect medname 药品名, saleque 销售量From medicine, saleWhere medicine, medno = sale.mednoOrder by salequa descExec pro_order_sale

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1