1、 数据库原理和设计课程设计试验汇报药店药品管理系统数据库 专 业 计算机科学和技术 班 级 4班 学 号 2080 2085 2086 学生姓名 周雪峰 李毓磊 张凯峰 任课老师 朱焱老师 教导老师 谭洁帆, 林钊 12 月 14 日一、课程设计目标 (1)加深了解数据库基础概念和原理,提升数据库设计能力(2)掌握数据流图、ER图,关系模式设计方法(3)熟练掌握SQL定义子语言,操纵子语句命令语句(4)掌握关系模型上完整性约束机智(5)熟悉SQL Server数据库开发方法,和一定数据库管理技术(6)提升数据库设计标准化文档书写能力二、课程设计试验环境 Windows XP Microsoft
2、 SQL Server三、课程设计内容1、需求分析阶段1.1系统分析一、系统处理对象分析(1)药店药品信息:关键包含 药品编号 药品名称 药品分类 药品规格 药品品牌 进药单价 买药单价等 利用这些信息能够方便查询药品基础信息和了解药品盈利情况(2)制药商信息:制药商名称 制药商编号 企业地点 联络电话 联络网址 利用这些信息便于进药部门 查找药品产地,联络药品退订情况(3)买药人信息:买药人编号 买药人姓名 心别 年纪 电话 住址 利用这些信息便于药品出现问题时立即和当事人联络,同时便于退药时确定买药信息(4)药品存放信息:药品编号 柜台编号(5)柜台信息:柜台名称 柜台编号(6)药品退订信
3、息:药品编号 制药商编号 处理时间 药品数量 (7)药品售退信息: 药品编号 买药人编号 药品数量 柜台编号 二、系统功效要求分析药品管理系统应含有以下多个基础功效:(1) 药品购进和退订信息查询(2) 买药人员信息查询和统计(3) 药品存放信息查询和更新(4) 药品销售情况统计和药品售退情况查询(5) 盈利查询和统计(6) 药品剩下数量查询和缺货药品查询及统计三、总体安全要求(1) 保密性。机密或敏感数据在存放处理传输过程中应保密,并用户只有在授权后才能够访问。不一样用户只能访问系统收授权视图,这取决于其授权等级(2) 完整性。确保系统中信息处于一个完整和未受损害状态,预防因未授权访问,部件
4、故障或其它错误而引发信息篡改,破坏或丢失。药品管理系统信息对不一样用户应有不一样访问权限,购药人员只能查询库存信息,而库存更新应只能库存管理员进行等等。(3) 可靠性:保障系统在复杂网络环境下提供可连续、可靠服务1.2业务分析药品管理系统业务应有以下3个:(1) 药品购进(退订)业务:购药人员依据售药处对药品需求和库存信息,制订药品需求单并从制药商处购进药品,并将合格药品单送往 库存管理员进行药品存放,将不合格药品单送往制药商处进行退货。(2) 存药业务:库存管理员负责药品出入库。依据合格购货药品单,对新购进药品进行分类并将药品入库;依据取药单(退药单)将药品出库(入库)并修改库存信息和流水账
5、目,若药品缺货,将缺货药品信息单传给购药人员。(3) 售药业务:买药人将取药单(退药单)交给售药处,确定后,将药品售出(退回),并将取药单(退药单)交给库存管理员业务步骤图以下: (1)药品购进业务步骤图合格不合格库存信息购药人员填写药品取货单药品缺货单制药商药品取货单检验药名单药品单库存管理员药品入库单存档退货单(2)存药业务步骤图买药人退药单取药单售药处库存帐目取药单据库存管理员存档售药处确定退药单(3)售药业务步骤图售药处取药单取药单库存管理员登记流水账流水账改账库存帐目药品入库单购药员1.3数据步骤图系统全局数据流图 数据步骤图是一个能全方面地描述信息系统逻辑模型关键工具,她能够用少数
6、多个符号综合地反应出信息在系统中流动、处理和存放情况,它有抽象性、概括性、层次性三大特点。经过对药店中药品销售业务调查、数据搜集处理和信息步骤分析,明确了该系统关键功效,分别为(1)药品购进和药品退订信息查询;(2)买药人员信息查询和统计;(3)药品存放信息查询和更新;(4)药品销售情况统计和药品被退情况查询;(5)盈利查询和统计;(6)药品剩下数量查询和缺货药品查询及统计。图,即为药品销售系统全局数据流图,即第一层数据步骤图。药品发货单不 符 合存 储 清 单符合库存药品清单返回重新清点决定退药退 药 单出 库 单退药单据取药单取药单据退货单商品不合格单入库单制药商1.1检验药品1库存台账1
7、.3退货2流水账2.3退药2.1售药买药人员2.2决定退药库存管理3.1确定药品3.2药品进库药品订货单药品合格单1.2药品进库系统局部数据流图全局数据流图从整体上描述了系统数据流向和加工处理过程,为了清楚地描述系统数据流向和加工处理每个细节,在全局DFD基础上,对全局DFD中一些局部进行单独放大,深入细化,过程以下:药品销售过程关键分为三个业务,第一个业务为药品购进业务,第二个业务为存药业务,第三个业务为售药业务。针对三个业务得到第二层数据步骤图以下:(1)药品购进业务步骤图退货单入库单药品合格单药品订货单药品发货单商品不合格单流水账库存台账制药商1.1检验药品1.2药品进库11.3退货2(
8、2)存药业务步骤图决定退药退药单据退药单出库单取药单取药单据流水账库存台账买药人员2.1售药122.3退药2.2决定退药(3)售药业务步骤图不符合返回重新清点存放清单符合库存药品清单库存台账库存管理3.1确定药品3.2药品进库12.3退药1.4数据字典因为数据步骤图表示不够正确、具体,只有当数据步骤图中出现每一个成份全部给出定义以后,才能完整、正确地描述一个系统,所以,有必需建立数据字典来对数据步骤图中各个元素作出具体说明。数据字典通常包含数据项、数据结构、数据存放和处理过程5个部分,其中数据项是数据最小组成单位,若干个数据项能够组成一个数据结构,数据字典经过对数据项和数据结构定义来描述数据流
9、、数据存放逻辑内容。(1) 数据项该系统设计数据项共有24个,以下表:数据项编号数据项名存放结构别名取值约束DI-1Dnochar(5)药品编号DI-2Dnamechar(20)药品名称DI-3Dclasschar(8)药品分类DI-4Dguigechar(10)药品规格DI-5Dbrandchar(10)药品品牌DI-6Dprice1float进药单价DI-7Dprice2float卖药单价大于零DI-8Pnochar(5)买药人编号大于零DI-9Pnamechar(10)买药人姓名DI-10Pageint年纪1255DI-11Psexchar(2)性别男女DI-12Pphonechar(1
10、1)联络电话DI-13Paddresschar(20)住址DI-14Mnochar(5)制药商编号DI-15Mnamechar(20)制药商名称DI-16Mplacechar(20)企业地点DI-17Mphonechar(11)联络电话DI-18Memailchar(15)联络网址DI-19Lnamechar(20)柜台名称DI-20Lnochar(5)柜台编号DI-21Quantityint药品数量大于零DI-22Time_SDsmalldatetime处理时间DI-23Supplychar(4)订退方法订购、退订DI-24Dealchar(4)售退方法售出、退回数据结构该系统数据结构共有7
11、个,具体见下表:数据结构编号数据结构名含义说明组成DS-1Drug药品信息Dno Dname Dclass Dbrand Dprice1 Dprice2DS-2Patient买药人信息Pno Pname Page Psex Pphone PaddressDS-3Maker制药商信息Mno Mname MplaceMphoneMemailDS-4Storage柜台信息Lno LnameDS-5Order_Back药品退订信息Mno Dno Time_SD Quantity SupplyDS-6Buy_Back药品退售信息Pno Dno Time_SDQuantity DealDS-7Stored
12、药品存放信息Dno Lno Quantity2.概念设计部分2.1 分析过程依据之前数据流图和数据字典,我们提取出实体、实体属性、标识实体码、确定实体之间联络及其类型。定义以下: 药品:药品编号、药品名称、药品分类、药品规格、药品品牌、进药单价买药单价 买药人员:买药人编号、买药人性命、性别、年纪、联络电话、住址 制药商:制药商编号、制药商名称、企业地位、联络电话、联络网址 柜台信息:柜台编号、柜台名称 药品退订:药品编号、制药上编号、药品数量、处理时间、退订方法 药品售退:药品编号、买药人编号、药品数量、处理时间、售退方法 药品储存:药品编号、柜台编号、药品数量2.2 子模块ER图 2.2.
13、1存药子模块ER图 2.2.2售药子模块ER图2.2.3购进药品子模块ER图2.3 全局ER图 3.逻辑设计部分3.1数据库关系模式定义描述1. Drug(药品)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Dnochar(5)药品编号否主键Dnamechar(20)药品名称否Dclasschar(10)药品分类Dguigechar(10)药品规格Dbrangchar(10)药品品牌Dprice1floar进药单价否大于0Dprice2floar买药单价否大于02.patient(买药人)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Pnochar(5)买药人编号否主键Pn
14、amechar(20)买药人姓名否Psexchar(10)性别1-150Pageint年纪nan、nvPphonechar(11)联络号码否Paddresschar(20)进住址3.Maker(制药商)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Mnochar(5)制药商编号否主键Mnamechar(20)制药商名称否Mpalcechar(20)企业地址否Mphonechar(11)联络电话否Meailchar(20)联络邮箱否4.Storage(存放位置)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Lnochar(5)存放编号否主键Lnamechar(20)存放位置否
15、大于05, DOrder(订药)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Mnochar(5)制药商编号否外键(主键之一)Dnochar(5)药品编号否外键(主键之一)Quantityint药品数量否大于0Time_SDsmalldatetime处理时间Supplychar(4)订退方法否订购6.Dback(药品退订)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Mnochar(5)制药商编号否外键(主键之一)Dnochar(5)药品编号否外键(主键之一)Quantityint药品数量否大于0Time_SDsmalldatetime处理时间Supplychar(4)订退
16、方法否退订7. Dbuy(买药)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Pnochar(5)买药人编号否外键(主键之一)Dnochar(5)药品编号否外键(主键之一)Quantityint药品数量否大于0Time_SDsmalldatetime买药时间Dealchar(4)售退方法否售出8、BBack(退药)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Pnochar(5)买药人编号否外键(主键之一)Dnochar(5)药品编号否外键(主键之一)Quantityint药品数量否大于0Time_SDsmalldatetime买药时间Dealchar(4)售退方法否售出9
17、.Stored(库存)属性名数据类型别名(注释)可否为空主键 / 外键取值范围Lnochar(5)存放编号否外键(主键之一)Dnochar(5)药品编号否外键(主键之一)大于0Quantityint药品数量否3.2用户子模式视图设计1、DM_P(订药)属性名数据类型别名(注释)可否为空取值范围Dnamechar(5)药品名称否Dguigechar(5)药品规格否DBrandint药品品牌否Mnamechar(20)制药商名称Mpalacechar(4)企业地点Mphonechar)11)否Meamilchar(20)否Time_SDsmalldatetime处理时间否Supplychar(4)
18、处理方法否订购Qauntityint数量否大于02.DM_M(药品退订)属性名数据类型别名(注释)可否为空取值范围Dnamechar(5)药品名称否Dguigechar(5)药品规格否Dpricel1float药品进价否大于0Dpricel2float药品售价否大于0DBrandint药品品牌否Mnamechar(20)制药商名称Mpalacechar(4)企业地点Mphonechar)11)否Meamilchar(20)否Time_SDsmalldatetime处理时间否Supplychar(4)处理方法否退订Qauntityint数量否大于03. PD_M(买药)属性名数据类型别名(注释)
19、可否为空取值范围Pnamechar(10)买药人名字否Pageint年纪1-150Pphonechar(11)电话否Paddresschar(20)地址Dnamechar(5)药品名称否Dguigechar(5)药品规格否Dpricel2float药品售价否大于0Time_SDsmalldatetime处理时间否Qauntityint数量否大于04、DS_M(药品存放)属性名数据类型别名(注释)可否为空取值范围Dnochar(5)药品编号否Dnamechar(5)药品名称否Dpricel1float药品进价否大于0Lnamechar(20)存放位置否Quantityint药品数量否大于04.物
20、理设计部分4.1目标和任务1. 确定数据库物理结构,关键指存取方法和存放结构2. 对物理结构进行评价,评价关键是时间和空间效率数据存取方法 4.2 数据存取方法4.2.1基础表索引1. 因为基础表Stored主码Dno,Lno常常在查询条件中出现,且它们更新平率较低,所以考虑在这组属性上建立作为唯一索引2. 因为基础表DOrder主码Dno,Mno常常在查询条件和链接操作中出现,所以考虑在这组属性上建立作为唯一索引3. 由表Dbuy主码Dno,Pno取值唯一,常常在查询条件中出现,且她们更新平率较低,所以考虑在这组属性上建立作为唯一索引4.2.2 系统模块分析1、 药品基础信息查询和更新(插入
21、、删除、修改)操作2、 制药商基础信息查询和更新(插入、删除、修改)操作3、 买药人基础信息查询和更新(插入、删除、修改)操作4、 药品存放信息查询和更新(插入、删除、修改)操作5、 药品盈利情况统计查询6、 买药人购置药品信息查询7、 管理员对买药人购置药品和退回药品信息查询8、 管理员对购药人员订购药品和退订药品信息查询4.2.3 系统模块分析四、程序源码和运行结果 1表和视图建立1.1 创建购药统计表create table DBuy( Pno char(5 ) not null,Dno char(5) not null,Quantity int not null ,Time_SD sm
22、alldatetime,Deal char(4) not null,create nonclustered index timeidx on DBuy(Time_SD DESC),primary key(Pno,Dno),foregin key(Pno) reference Parient(Pno),forgrin key(Dno) reference Drug(Dno),check(Quantity0),check(Deal=售出);1.2 创建药品存放表create table Stored( Lno char(5 ) not null,Dno char(5) not null,Quant
23、ity int not null ,primary key(Lno,Dno),foregin key(Lno) reference Storage(Lno),forgrin key(Dno) reference Drug(Dno),check(Quantity0));1.3 创建买药视图create view DM_P as select Dname,Dguige,Drand,Mname,Mplace,Mphone,Memail from Drug,Maker,Dorder where Drug.Dno=Dorder.Dno and Maker.Mno=Dorder.Mno with chec
24、k option 1.4 创建退药视图create view DM_M as select Dname,Dguige,Dbrand,Dprice1,Dpricel2,Mname,Mplace,Mphone,Memail from Drug,Maker,DBack where Drug.Dno=DBack.Dno and Maker.Mno=DBack.Mno with check option 2 数据插入2.1 向 Dorder表中插入一个订购统计insert into Dorder values(M0001,D0009,150,-10-23,订购)5.2.2 向Drug表插入一个新药品统计
25、insert into Drug values(D0024,维生素,维生素,125s*36粒,太极,1.50,2.00)3数据查询 3.1 全药品存放位置及库存查询 3.2 查询在-8-21退订药品数量大于80药品具体信息 3.3查询在-8-05 前买药病人姓名和地址4 数据统计4.1 统计在-8-21卖出各药品数量4.2 统计编号为P0001病人购置各药品总数量5 数据修改5.1 将Drug表中编号为D0001药品名称由666感冒灵更改为999感冒灵5.2 修改存放在二层左位置全部药品库存数量为100五、课程设计总结和感悟 在学习数据库这门课程时,感觉学到知识还是掌握了,而且认为自己已经了解
26、了,但真正经过一个课程设计去应用这些知识时候才发觉,会碰到很多困难,而且学到知识自己其实并不能熟练应用,将知识应用到实际工作并没有很好完成。在课程设计碰到了很多问题,比如:插入数据时,提醒插入数据长度不符合要求,原因是未考虑到汉字占两个字节,char长度设置过小,处理措施是修改长度即可无法插入数据到一个表中,总是提醒外键约束错误,原因是因为该表中有外键,而外键所在表未插入数据,所以无法插入数据到该表(插入外键值不存在)。处理方法是先将外键所在表数据插入,在插入该表数据。数据库建立在一个账号上,只有一个人能够操作,显得不方便。能够经过授权GRANT给另一个账号,就能够两个账号进行操作,方便了很多
27、。 问题和困难还碰到过很多,在这不一一列数。在课程设计过程中,经历了很多相关设计工作,也学习到了很多书本上有和没有知识,更关键是,经过不停实践和自学,不停发觉问题,思索问题,进而处理问题,有效提升了我们动手能力,并加深了对知识了解和掌握,从一开始需求分析,到概念设计,到逻辑设计,再到物理设计,一直到上机建立数据库,一步步走来,经过我们自己亲自分析、设计、和动手,也让我们不停进步和成长。这次数据库课程设计给我最大印象就是假如自己有了爱好,就动手去做,任何困难在勇气和毅力面前全部是纸老虎。从做这个数据库开始不管碰到什么困难,我们全部一直坚持,努力去处理,经过上网,和同学交流,向老师请教等等手段。 经过这次课程设计完成,使我们对所学知识有了深入掌握,同时也经过实践发觉了自己不足。所以在以后学习中,我们仍应该好好学习,不停完善自我。当然,本系统仍然存在了很多不足之处,如功效不够完善,安全性问题没有很好处理等,恳请老师谅解。