医院门诊管理系统数据库课程设计论文.docx
《医院门诊管理系统数据库课程设计论文.docx》由会员分享,可在线阅读,更多相关《医院门诊管理系统数据库课程设计论文.docx(61页珍藏版)》请在冰豆网上搜索。
医院门诊管理系统数据库课程设计论文
.信息工程学院
《数据库课程设计》论文
题目:
医院门诊管理系统数据库设计
学号:
2012013324
专业班级:
软件工程121班
姓名:
张桐
指导老师:
蔚继承
完成日期:
2014年06月20日
医院门诊管理系统数据库设计
张桐
(信息工程学院软件工程12级1班)
摘要:
随着社会的进步和人类生产生活水平的提高,国内现有的医院不论从规模上还是服务质量上都实现了显著增长。
显然,如果医院门诊仍采用人工管理的方式显然无法应对庞大的病患需求。
如今,科学与发展已成为时代的主题。
在中国软件行业日益进步的今天,我们可以利用这些资源来帮助减轻医生和病人的负担,让病人能够尽快就医。
一个高质量的医院门诊管理系统,能提高医院的社会效益与经济效益。
本文采用结构化分析和设计方法,运用数据流程图和E-R图等工具对小型医院门诊管理系统数据库进行分析和设计,实现登记挂号、诊断治疗、收费挂号等医院门诊的基本业务。
关键字:
医院门诊管理;数据库设计;医院
随着社会不断的进步,医院等基础服务机构,早已成为了人们生活必不可少的一部分,在很大程度上方便了人们的生活。
为了在更大程度上满足病患的需求,许多医院的规模进一步扩大,管理也进一步改善。
逐步走向医疗服务和管理的成熟化。
而方便有效的管理手段已经成为了所有管理部门管理的有力工具。
传统的人工管理手段在高速发展的今天,已经不再体现其优势,繁复和大量的手工记录和计算给管理带来了更多的重复工作,如果能将复杂的各类管理过程封装在一个操作中,执行每个管理步骤时使用相对应的功能,那就能给管理者带来更大的便捷。
数据库设计的目标就是为用户和各种应用系统提供一个信息基础设施和高效的运行环境。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已经进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对医院门诊信息进行管理,具有比手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大等。
这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理的重要条件。
针对典型的管理系统,以医院门诊管理为载体,设计医院门诊管理系统。
以满足门诊管理者对各类数据的管理,以现代化的思维模式去经营维护。
1.需求分析
需求分析阶段就是分析用户的需求,是数据库设计的起点。
医院门诊管理的主要目标是通过医院门诊的整个服务流程的管理和控制及对库存数据有效的统计和分析,以保证管理的畅通,使决策人员及早发现问题,采取相应措施,调整管理方式。
同时,通过数据分析,可以获得当前社会的病患需求,也便于管理人员不断进行管理的优化和提高管理水平。
通过查询资料和分析当前的医院门诊部服务状况,明确病患的需求而进行设计。
并完成业务流程图和数据流程图。
进一步创建数据字典,完成数据结构和数据处理功能模块。
1.1数据流程图
数据流程图反映的是医院门诊管理工作过程的数据去向和流向。
通过数据流程图,抽象现实世界的数据到医院门诊管理的物理模型。
再根据这个物理模型要抽象出信息流,将物理模型转化成逻辑模型,反映信息在系统中的流动、处理和存储情况,在整个过程中,所得到的数据流程图可如下图1-1至图1-5所示,分为顶层数据流图、第一层数据流图和第二层数据流图。
1.2数据字典
数据字典是体统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。
数据字典在数据库设计中占有很重要的地位。
数据字典通常包括数据项、数据结构、数据流、数据存储、处理逻辑5个部分。
数据项是不可再分的数据单位。
数据结构反映了数据之间的组合关系。
数据流是数据结构在系统内传输的路径。
数据存储是数据结构停留或保存的地方也是数据流的来源和去向之一。
处理逻辑一般用判定表或判定树来描述。
数据字典是需要描述处理过程的说明性信息。
本文中包括35个数据项,8个数据结构,11个数据流,6个处理逻辑,8个数据存储。
1.2.1数据项
数据项编号
数据项名
数据项含义
与其他数据项关系
类型
长度
取值范围
DI01-1
Pno
病人编号
主键
varchar
20
DI01-2
Pname
病人姓名
varchar
20
notnull
DI01-3
Psex
性别
varchar
20
DI01-4
Page
年龄
int
0-150
DI01-5
Dno
医生号
外键
varchar
20
DI02-1
Dno
医生号
主键
varchar
20
DI02-2
Dname
医生姓名
varchar
20
notnull
DI02-3
Dtitle
职称
varchar
20
DI02-4
Dtel
电话
varchar
20
DI02-5
Dp_no
科室编号
外键
varchar
20
DI03-1
Dp_no
科室编号
主键
varchar
20
DI03-2
Dp_name
科室名称
varchar
20
notnull
DI03-3
Dp_tell
联系方式
varchar
20
DI04-1
Mno
药品编号
主键
varchar
20
DI04-2
Mname
药品名称
varchar
20
notnull
DI04-3
Mprice
药品价格
float
DI04-4
Mquantity
药品库存余量
int
DI05-1
Rno
挂号单号
主键
varchar
20
DI05-2
Rdate
挂号日期
date
DI05-3
Bno
收费单号
外键
varchar
20
DI05-4
Pno
病人编号
外键
varchar
20
DI05-5
Dno
医生编号
外键
varchar
20
DI05-6
Rway
挂号方式
varchar
20
DI06-1
Bno
收费单号
主键
varchar
20
DI06-2
Bdate
日期
date
DI06-3
Bmoney
金额
float
DI06-4
Bway
收费方式
varchar
20
DI07-1
Pr_no
处方号
主键
varchar
20
DI07-2
Pr_date
日期
date
DI07-3
Mno
药品编号
外键
varchar
20
DI07-4
Bno
收费单号
外键
varchar
20
DI08-1
Dno
医生号
主键、外键
varchar
20
DI08-2
Pno
病人编号
主键、外键
varchar
20
DI08-3
Iname
病名
varchar
20
DI08-4
Pr_no
处方号
外键
varchar
20
1.2.2数据结构
数据结构编号
数据结构名
数据结构含义
组成
DS-1
Doctor
医生
Dno,Dname,Dtitle,Ddept,Dtel
DS-2
Patient
病人
Pno,Pname,Psex,Page,Dno
DS-3
Medicine
药品
Mno,Mname,Mprice,Mquantity
DS-4
Department
科室
Dp_no,Dp_name,Dp_tel
DS-5
Register
挂号单
Rno,Rway,Rdate,Pno,Bno
DS-6
Bill
收费单
Bno,Bdate,Bmoney,Bway
DS-7
Prescription
处方
Pr_no,Pr_date,Mno,Bno
DS-8
Diagnose
诊断结果
Dno,Pno,Iname,Pr_no
1.2.3数据流
数据流编号
数据流名称
简述
数据流来源
数据流去向
数据流组成
数据流量
高峰流量
F1
挂号请求
病人来到医院对所需的治疗或者看病项目的挂号
病人
挂号处理
病人信息、分配医师
每日1000人
每日5000人
F2
挂号单
处理病人的挂号,由病人信息生成挂号单
挂号处理
病人
病人、医生、挂号单编号
每日1000次
每日5000次
F3
缴费
对于各项医疗必须费用进行缴费
病人
收费处理
收费信息
每日1000次
每日5000次
F4
收费凭证
病人缴费后获取收费凭证以备后续使用
收费处理
病人
收费信息、详细记录
每日1000次
每日5000次
F5
看病
病人到相关科室进行初诊
病人
初诊处理
病人信息、初诊信息
每日1000人
每日5000人
F6
处方、病例
医师对病人开处方、填写病例
确诊处理
病人
病人、处方信息、病例信息
每日1000次
每日5000次
F7
取药
病人到药房领取相关药品
病人
取药处理
病人、药品信息
每日1000次
每日5000次
F8
药物
药房工作人员依照处方把相关药品交给病人
取药处理
病人
病人、药品
每日1000次
每日5000次
F9
挂号项目
挂号系统针对病人的挂号项目为其分配医师
挂号处理
分配医师处理
病人信息、分配医师、科室
每日1000次
每日5000次
F10
医师信息
系统调用相关医师信息返回
分配医师处理
挂号处理
医生
每日1000次
每日5000次
F11
诊断信息
将诊断信息整理汇总,最后确诊
诊断处理
确诊
病人、治疗记录
每日1000次
每日5000次
1.2.4.处理逻辑
处理逻辑
处理逻辑名称
简述
输入的数据流
处理
输出的数据流
处理频率
P1.1
挂号
对病人挂号请求的处理
病人信息
分配医师
挂号单
每人1次
P1.2
收费
收费内容和标准
收费内容
收取费用
收费记录
每人1次
P1.3
分配医师
根据挂号记录分配医师
医生记录
分配医师
医生信息
每人1次
P2.1
诊断
医生对病情进行诊断
诊断请求
初步诊断
初诊信息
每人1次
P2.2
确诊
完成诊断,确诊
诊断信息
确诊
诊断结果
每人1次
P3.1
取药
取药
处方
取药
药物信息
每人1次
1.2.5.数据存储
数据存储编号
数据存储名称
简述
数据存储组成
相关的处理
S1
挂号记录
用于记录病人的挂号信息
病人信息、医生
P1.1,P2.1,P3.1
S2
收费记录
用于记录收费信息
收费信息
P1.2,P2.2,P3.2,P3.3
S3
值班医生记录
记录医生的值班安排
医生值班安排
P3.1
S4
诊断记录
记录病人的诊断过程
诊断过程
P2.3,P3.1
S5
药物记录
用于记录药物价格剩余量等
药物信息
P3.2
S6
收费款项
用于记录收费情况
收费信息
P1.2
S7
收费标准
用于统一收费的标准
收费款项标准
P1.2
S8
处方
用于记录医生对病人开出的处方
处方
P3.2
2.数据库结构设计
数据库的结构设计主要包括概念设计和逻辑设计两个部分。
2.1概念设计
概念设计阶段的任务是将需求分析得到的用户需求抽象为信息结构(概念模型)的过程。
要能充分的反应事物与事物之间的联系,是对现实世界的一个真实模型。
在需求分析阶段得到的应用需求首先抽象为信息世界的结构才能更好的用某一DBMS实现这些需求。
E-R模型是概念模型的有力工具。
逐一设计分E-R图,再将所有的分E-R图综合成系统的总E-R图。
2.1.1分E-R图建立
分E-R图的建立依据于数据流图的建立。
以下可从第二层数据流图分别建立分E-R图。
详见图2-1至2-3。
2.诊断分ER图
2.1.2全局/整体E-R图
根据上述列出的分E-R图,消除其中存在的冲突、冗余,建立全局E-R图(详见图2-4),并列出所有实体和联系属性的属性E-R图(详见图2-5)
2.2逻辑设计
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
根据DBMS产品以及不同系统的限制,设计逻辑结构时一般有以下三个步骤:
首先将概念结构转换为一般的
关系、网状、层次模型;将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;最后对数据模型进行优化。
医院门诊管理系统的设计采用关系模型。
E-R图转化为关系模型实际上就是要将实体型、实体的属性和实体型之间的联系转换为关系模式。
一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体型间的联系有以下不同的情况:
(1)一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。
(2)一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系没模式,则与联系向连的各实体的码以及联系本身的属性均转换为关系的属性。
(3)一个m:
n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系的码的一部分。
2.2.1建立关系模式
医院门诊管理系统涉及到的关系主要有:
病人和医生为n:
1(多对一)的关系,将其之间的联系与n端实体合并。
病人和挂号单的关系为1:
1(一对一),将其之间的联系与任意一端实体合并。
科室和医生为1:
n(一对多)的关系,将其之间的联系与n端实体合并。
医生和诊断结果的关系为1:
n(一对多)的关系,也将其之间的联系与n端实体合并。
诊断结果和处方单的关系为1:
1(一对一),将其之间的联系与任意一端实体合并。
处方单、收费单和药品之间的联系为三元的关系,将它们之间的联系转换为独立的关系模式。
具体的转换如下所示(主键加下划线,外键斜体加粗):
病人(病人编号,病人姓名,性别,年龄,医生号)
医生(医生号,医生姓名,职称,电话,科室号)
药品(药品编号,药品名称,单价,数量)
处方(处方号,日期,药品编号,收费单号)
收费单(收费单号,日期,金额,收费方式)
诊断结果(医生号,病人编号,病名,处方号)
挂号单(挂号单号,挂号方式,日期,病人编号,收费单号)
科室(科室号,科室名称,联系方式)
2.2.2关系模式规范化处理
关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程度可用范式来衡量。
范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合。
在本系统中,所有建立的关系模式都符合三范式。
2.2.3用户子模式建立
根据需求分析,研究建立满足不同需求的用户子模式,各个子模式的建立在更大程度上方便数据操作。
用户子模式的定义如下:
收费细则视图(病人号,收费单号,日期,金额,收费方式)
病人-药品视图(病人号,药品编号)
诊断结果视图(病人号,病人姓名,病名)
医生病人视图(医生号,医生姓名,病人姓名)
科室医生视图(医生号,医生姓名,科室名称)
病人挂号视图(病人号,病人姓名,挂号单号,挂号日期,挂号方式)
2.2.4关系模式逻辑结构定义
表2-6病人关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Pno
病人编号
varchar
20
是
Pname
病人姓名
varchar
20
notnull
Psex
性别
varchar
20
Page
年龄
int
0-150
Dno
医生号
varchar
20
是
表2-7医生关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Dno
医生号
varchar
20
是
Dname
医生姓名
varchar
20
notnull
Dtitle
职称
varchar
20
Ddept
科室号
varchar
20
是
Dtel
电话
varchar
20
表2-8药品关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Mno
药品编号
varchar
20
是
Mname
药品名称
varchar
20
notnull
Mprice
单价
float
Mquantity
数量
int
表2-9处方单关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Pr_no
处方号
varchar
20
是
Pr_date
日期
date
Mno
药品编号
varchar
20
是
Bno
收费单号
varchar
20
是
表2-10收费单关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Bno
收费单号
varchar
20
是
Bdate
日期
date
Bmoney
金额
float
20
Bway
收费方式
varchar
20
表2-11诊断结果关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Dno
医生号
varchar
20
是
是
Pname
病人姓名
varchar
20
是
是
Iname
病名
Pr_no
处方号
varchar
20
是
表2-12挂号单关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Rno
挂号单号
varchar
20
是
Rway
挂号方式
varchar
20
Rdate
日期
date
Pname
病人姓名
varchar
20
是
Bno
收费单号
varchar
20
是
表2-13科室关系模式
属性名
含义
数据类型
长度
是否为主属性
是否为外键
约束条件
Dp_no
科室号
varchar
20
是
Dp_name
科室名称
varchar
20
notnull
Dp_tel
联系方式
varchar
20
3.数据库物理设计
主要包括数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统。
为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构的过程,就是数据库的物理设计。
这一阶段主要的任务是确定数据库的物理结构,并不断的进行优化处理,主要建立索引、触发器、存储过程。
索引名称
索引类型
用途
idx_bno
唯一、非聚集
按bno属性列升序排列
unique_pname
唯一、非聚集
实现唯一性约束
unique_mname
唯一、非聚集
实现唯一性约束
4.数据库实施与测试
主要包括数据库实施和测试两个部分。
(下面分别写出SQLServer2008和Oracle的实施测试过程)
4.1SQLServer2008数据库实施与测试
4.1.1数据库及数据库对象建立
本系统建立名为Hospital的数据库。
数据库对象分为基本表、视图、索引、触发器、存储过程等。
下面分别列出相关代码。
1.基本表
createtableDepartment
(Dp_novarchar(20)primarykey,
Dp_namevarchar(20)notnull,
Dp_telvarchar(20)
)
createtableDoctor
(Dnovarchar(20)primarykey,
Dnamevarchar(20)notnull,
Dtitlevarchar(20),
Dp_novarchar(20)referencesDepartment(Dp_no),
Dtelvarchar(20)
)
createtablePatient
(Pnovarchar(20)primarykey,
Pnamevarchar(20),
Psexvarchar(20),
Pageintcheck(Page>=0andPage<=150),
Dnovarchar(20)referencesDoctor(Dno)
)
createtableMedicine
(Mnovarchar(20)primarykey,
Mnamevarchar(20)notnull,
Mpricefloat,
Mquantityint
)
createtableBill
(Bnovarchar(20)primarykey,
Bdatedate,
Bmoneyfloat,
Bwayvarchar(20)
)
createtablePrescription
(Pr_novarchar(20)primarykey,
Pr_datedate,
Mnovarchar(20)referencesMedicine(Mno),
Bnovarchar(20)referencesBill(Bno)
)
createtableDiagnose
(Dnovarchar(20)referencesDoctor(Dno),
Pnovarchar(20)referencesPatient(Pno),
Inamevarchar(20),
Pr_novarchar(20)referencesPrescription(Pr_no),
primarykey(Dno,Pno)
)
crea