系统局部数据流图 全局数据流图从整体上描述了系统的数据流向和加工处理过程,为了清楚地描述系统数据的流向和加工处理的每个细节,在全局DFD基础上,对全局DFD中的某些局部进行单独放大,进一步细化,过程如下: 药品销售过程主要分为三个业务,第一个业务为药品购进业务,第二个业务为存药业务,第三个业务为售药业务。针对三个业务得到第二层数据流程图如下: 精品word文档 . (1)药品购进业务流程图 药品合格单 药品发货单 制药商 药品订货单 1.1 检验药品 商品不合格单1.2 药品进库 入库单 1 库存台账 退货单 1.3 退货 2 流水账 (2)存药业务流程图 取药单据 买药人员 取药单 2.1 售药 出库单 1 库存台账 退药单据2 流水账 (3)售药业务流程图 库存药品清单 库存管理 1.4数据字典 由于数据流程图表达不够准确、具体,只有当数据流程图中出现的每一个成分都给出定义之后,才能完整、准确地描述一个系统,因此,有必要建立数据字典来对数据流程图中的各个元素作出详细的说明。数据字典通常包括数据项、数据结构、数据存储和处理过程5个部分,其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构,数据字典通过对数据项和数据结构的定义来描述数据流、数据存储的逻辑内容。 (1) 数据项 该系统设计的数据项共有24个,如下表: 数据项编号 数据项名 存储结构 别名 取值约束 DI-1 Dno char(5) 药品编号 精品word文档 2.2 决定退药 决定退药 2.3 退药 退药单 3.1 确认药品 符合 3.2 药品进库 存储清单 1 库存台账 不符合 返回重新清点 2.3 退药 . DI-2 DI-3 DI-4 DI-5 DI-6 DI-7 DI-8 DI-9 DI-10 DI-11 DI-12 DI-13 DI-14 DI-15 DI-16 DI-17 DI-18 DI-19 DI-20 DI-21 DI-22 DI-23 DI-24 Dname char(20) Dclass char(8) Dguige char(10) Dbrand char(10) Dprice1 float Dprice2 float Pno char(5) Pname char(10) Page int Psex char(2) Pphone char(11) Paddress char(20) Mno char(5) Mname char(20) Mplace char(20) Mphone char(11) Memail char(15) Lname char(20) Lno char(5) Quantity int Time_SD smalldatetime Supply char(4) Deal char(4) 数据结构编号 DS-1 DS-2 DS-3 DS-4 DS-5 DS-6 DS-7 药品名称 药品分类 药品规格 药品品牌 进药单价 卖药单价 大于零 买药人编号 大于零 买药人姓名 年龄 1-255 性别 男女 联系电话 住址 制药商编号 制药商名称 公司地点 联系电话 联系网址 柜台名称 柜台编号 药品数量 大于零 处理时间 订退方式 订购、退订 售退方式 售出、退回 数据结构 该系统的数据结构共有7个,具体见下表: 数据结构名 含义说明 组成 Drug 药品信息 Dno Dname Dclass Dbrand Dprice1 Dprice2 Patient 买药人信息 Pno Pname Page Psex Pphone Paddress Maker 制药商信息 Mno Mname Mplace Mphone Memail Storage 柜台信息 Lno Lname Order_Back 药品退订信息 Mno Dno Time_SD Quantity Supply Buy_Back 药品退售信息 Pno Dno Time_SD Quantity Deal Stored 药品存储信息 Dno Lno Quantity 精品word文档 . 2.概念设计部分 2.1 分析过程 根据之前的数据流图和数据字典,我们提取出实体、实体的属性、标识实体的码、确认实体之间的联系及其类型。定义如下: 药品:[药品编号、药品名称、药品分类、药品规格、药品品牌、进药单价‘买药单价] 买药人员:[买药人编号、买药人性命、性别、年龄、联系电话、住址] 制药商:[制药商编号、制药商名称、公司地位、联系电话、联系网址] 柜台信息:[柜台编号、柜台名称] 药品退订:[药品编号、制药上编号、药品数量、处理时间、退订方式] 药品售退:[药品编号、买药人编号、药品数量、处理时间、售退方式] 药品储存:[药品编号、柜台编号、药品数量] 2.2 子模块ER图 2.2.1存药子模块ER图 2.2.2售药子模块ER图 2.2.3购进药品子模块ER图 精品word文档 . 2.3 全局ER图 3.逻辑设计部分 3.1数据库关系模式定义描述 1. Drug(药品) 属性名 Dno Dname Dclass 数据类型 char(5) char(20) char(10) 别名(注释) 可否为空 药品编号 药品名称 药品分类 否 否 主键 / 外键 主键 取值范围 精品word文档 . Dguige Dbrang Dprice1 Dprice2 属性名 Pno Pname Psex Page Pphone Paddress char(10) char(10) floar floar 数据类型 char(5) char(20) char(10) int char(11) char(20) 药品规格 药品品牌 进药单价 买药单价 否 否 主键 / 外键 主键 大于0 大于0 取值范围 1-150 nan、nv 别名(注释) 可否为空 买药人编号 买药人姓名 性别 年龄 联系号码 进住址 否 否 否 2.patient(买药人) 3.Maker(制药商) 属性名 Mno Mname Mpalce Mphone Meail 数据类型 char(5) char(20) char(20) char(11) char(20) 别名(注释) 可否为空 制药商编号 制药商名称 公司地址 联系电话 联系邮箱 否 否 否 否 否 主键 / 外键 主键 取值范围 4..Storage(存储位置) 属性名 Lno Lname 5, DOrder(订药) 属性名 Mno Dno Quantity Time_SD Supply 数据类型 char(5) char(5) int char(4) 别名(注释) 可否为空 制药商编号 药品编号 药品数量 订退方式 否 否 否 否 主键 / 外键 取值范围 外键(主键之一) 外键(主键之一) 大于0 订购 数据类型 char(5) char(20) 别名(注释) 可否为空 存储编号 存储位置 否 否 主键 / 外键 主键 取值范围 不小于0 smalldatetime 处理时间 6.Dback(药品退订) 属性名 Mno Dno Quantity Time_SD Supply 7. Dbuy(买药)数据类型 char(5) char(5) int char(4) 别名(注释) 可否为空 制药商编号 药品编号 药品数量 订退方式 否 否 否 否 主键 / 外键 取值范围 外键(主键之一) 外键(主键之一) 大于0 退订 smalldatetime 处理时间 精品word文档 . 属性名 Pno Dno Quantity Time_SD Deal 8、BBack(退药) 属性名 Pno Dno Quantity Time_SD Deal 9.Stored(库存) 属性名 Lno Dno Quantity 数据类型 char(5) char(5) int 别名(注释) 可否为空 存储编号 药品编号 药品数量 否 否 否 主键 / 外键 外键(主键之一) 外键(主键之一) 取值范围 不小于0 数据类型 char(5) char(5) int char(4) 别名(注释) 可否为空 买药人编号 药品编号 药品数量 售退方式 否 否 否 否 主键 / 外键 取值范围 外键(主键之一) 外键(主键之一) 大于0 售出 数据类型 char(5) char(5) int char(4) 别名(注释) 可否为空 买药人编号 药品编号 药品数量 售退方式 否 否 否 否 主键 / 外键 取值范围 外键(主键之一) 外键(主键之一) 大于0 售出 smalldatetime 买药时间 smalldatetime 买药时间 3.2用户子模式——视图设计 1、DM_P(订药) 属性名 Dname Dguige DBrand Mname Mpalace Mphone Meamil Time_SD Supply Qauntity 数据类型 char(5) char(5) int char(20) char(4) char)11) char(20) char(4) int 别名(注释) 可否为空 药品名称 药品规格 药品品牌 制药商名称 公司地点 处理方式 数量 否 否 否 否 否 否 否 否 取值范围 订购 大于0 smalldatetime 处理时间 2.DM_M(药品退订) 属性名 Dname Dguige Dpricel1 数据类型 char(5) char(5) float 别名(注释) 可否为空 药品名称 药品规格 药品进价 否 否 否 取值范围 大于0 精品word文档 . Dpricel2 DBrand Mname Mpalace Mphone Meamil Time_SD Supply Qauntity 属性名 Pname Page Pphone Paddress Dname Dguige Dpricel2 Time_SD Qauntity float int char(20) char(4) char)11) char(20) char(4) int 数据类型 char(10) int char(11) char(20) char(5) char(5) float int 药品售价 药品品牌 制药商名称 公司地点 处理方式 数量 否 否 否 否 否 否 否 大于0 退订 大于0 取值范围 1-150 大于0 大于0 3. PD_M(买药) smalldatetime 处理时间 别名(注释) 可否为空 买药人名字 年龄 电话 地址 药品名称 药品规格 药品售价 数量 否 否 否 否 否 否 否 smalldatetime 处理时间 4、DS_M(药品存储) 属性名 Dno Dname Dpricel1 Lname Quantity 数据类型 char(5) char(5) float char(20) int 别名(注释) 可否为空 药品编号 药品名称 药品进价 存储位置 药品数量 否 否 否 否 否 取值范围 大于0 大于0 4.物理设计部分 4.1目标与任务 1. 确认数据库的物理结构,主要指存取方式和存储结构 2. 对物理结构进行评价,评价重点是时间和空间效率数据存取方法 4.2 数据存取方法 4.2.1基本表索引 1. 由于基本表Stored的主码Dno,Lno经常在查询条件中出现,且它们更新平率较低,所以考虑在这组属性上建立作为唯一索引 2. 由于基本表DOrder的主码Dno,Mno经常在查询条件和链接操作中出现,所以考虑在这组属性上建立作为唯一索引 3. 由表Dbuy的主码Dno,Pno取值唯一,经常在查询条件中出现,且她们更新平率较低,所以精品word文档 . 考虑在这组属性上建立作为唯一索引精品word文档 . 4.2.2 系统模块分析 1、药品基本信息的查询与更新(插入、删除、修改)操作 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 smalldatetime, 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(Quantity>'0'), check(Deal='售出') );精品word文档 . 1.2 创建药品存储表 create table Stored ( Lno char(5 ) not null, Dno char(5) not null, Quantity int not null , primary key(Lno,Dno), foregin key(Lno) reference Storage(Lno), forgrin key(Dno) reference Drug(Dno), check(Quantity>'0') ); 精品word文档 . 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 check 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 精品word文档 . 2 数据插入 2.1 向 Dorder表中插入一个订购记录 insert into Dorder values('M0001','D0009','150','2014-10-23','订购') 5.2.2 向Drug表插入一个新的药品记录 insert into Drug values('D0024','维生素','维生素','125s*36粒','太极',1.50,2.00)精品word文档 . 3数据查询 3.1 全药品存储位置及库存查询 3.2 查询在2004-8-21退订的药品数量大于80的药品的详细信息 精品word文档 . 3.3查询在2004-8-05 前买药的病人的姓名和地址 4 数据统计 4.1 统计在2014-8-21卖出的各药品数量精品word文档 . 4.2 统计编号为\"P0001\"的病人购买各药品的总数量 5 数据修改 5.1 将Drug表中编号为D0001的药品的名称由666感冒灵更改为999感冒灵精品word文档 . 5.2 修改存储在二层左位置的所有药品的库存数量为100 五、课程设计总结与感悟 在学习数据库这门课程时,感觉学到的知识还是掌握了的,并且以为自己已经理解了,但真正通过一个课程设计去应用这些知识的时候才发现,会遇到很多困难,并且学到的知识自己其实并不能熟练的应用,将知识应用到实际的工作并没有很好的完成。 在课程设计遇到了许多问题,例如: 插入数据时,提示插入的数据长度不符合要求,原因是未考虑到汉字占两个字节,char[]的长度设置过小,解决办法是修改长度即可 无法插入数据到一个表中,总是提示外键约束错误,原因是因为该表中有外键,而外键所在的表未插入数据,所以无法插入数据到该表(插入的外键值不存在)。解决方法是先将外键所在表的数据插入,在插精品word文档 . 入该表的数据。精品word文档 . 数据库建立在一个账号上,只有一个人可以操作,显得不方便。可以通过授权GRANT给另一个账号,就可以两个账号进行操作,方便了许多。 问题和困难还遇到过许多,在这不一一列数。 在课程设计的过程中,经历了许多的相关设计工作,也学习到了许多书本上有和没有的知识,更重要的是,通过不断的实践和自学,不断发现问题,思考问题,进而解决问题,有效的提升了我们的动手能力,并加深了对知识的理解和掌握,从一开始的需求分析,到概念设计,到逻辑设计,再到物理设计,一直到上机建立数据库,一步步走来,通过我们自己亲自分析、设计、和动手,也让我们不断进步和成长。 这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,任何困难在勇气和毅力面前都是\"纸老虎\"。从做这个数据库开始无论遇到什么困难,我们都一直坚持,努力去解决,通过上网,与同学交流,向老师请教等等手段。 通过这次课程设计的完成,使我们对所学的知识有了进一步掌握,同时也通过实践发现了自己的不足。所以在今后的学习中,我们仍应该好好学习,不断完善自我。当然,本系统仍然存在了许多的不足之处,如功能不够完善,安全性问题没有很好解决等,恳请老师谅解。 感谢您的支持与配合,我们会努力把内容做得更好! 精品word文档
因篇幅问题不能全部显示,请点此查看更多更全内容