数库课程设计文
题 目:医院门诊理系统数库设计
学 号:
专业班级:
软件工程班
姓 名:
指导老师:
完成日期:
2014年X月X日
医院门诊理系统数库设计
(信息工程学院软件工程12级班)
摘 :着社会进步类生产生活水提高国现医院规模服务质量实现显著增长显然果医院门诊采工理方式显然法应庞病患需求科学发展已成时代题中国软件行业日益进步天利资源帮助减轻医生病负担病够快医高质量医院门诊理系统提高医院社会效益济效益文采结构化分析设计方法运数流程图ER图等工具型医院门诊理系统数库进行分析设计实现登记挂号诊断治疗收费挂号等医院门诊基业务
关键字:医院门诊理数库设计医院
目 录
1. 需求分析 1
11数流程图 1
12数字典 4
121数项 4
122数结构 5
123数流 6
124处理逻辑 6
125数存储 7
2.数库结构设计 7
21 概念设计 7
211 分ER图建立 7
212 全局整体ER图 8
22 逻辑设计 9
221 建立关系模式 10
222 关系模式规范化处理 10
223 户子模式建立 11
224 关系模式逻辑结构定义 11
3.数库物理设计 13
4.数库实施测试 13
41 SQL Server 2008数库实施测试 13
411 数库数库象建立 13
412 数入库 21
413 数库测试 23
42 Oracle数库实施测试 30
421 数库数库象建立 30
422 数入库 41
423 数库测试 43
5. 总结 49
着社会断进步医院等基础服务机构早已成生活必少部分程度方便生活更程度满足病患需求许医院规模进步扩理进步改善逐步走医疗服务理成熟化方便效理手段已成理部门理力工具
传统工理手段高速发展天已体现优势繁复量手工记录计算理带更重复工作果复杂类理程封装操作中执行理步骤时相应功理者带更便捷数库设计目标户种应系统提供信息基础设施高效运行环境
着科学技术断提高计算机科学日渐成熟强功已深刻认识已进入类社会领域发挥着越越重作作计算机应部分计算机医院门诊信息进行理具手工理法拟优点例检索迅速查找方便性高存储量等优点够极提高事劳资理效率企业科学化正规化理重条件
针典型理系统医院门诊理载体设计医院门诊理系统满足门诊理者类数理现代化思维模式营维护
1. 需求分析
需求分析阶段分析户需求数库设计起点医院门诊理目标通医院门诊整服务流程理控制库存数效统计分析保证理畅通决策员早发现问题采取相应措施调整理方式时通数分析获前社会病患需求便理员断进行理优化提高理水通查询资料分析前医院门诊部服务状况明确病患需求进行设计完成业务流程图数流程图进步创建数字典完成数结构数处理功模块
11数流程图
数流程图反映医院门诊理工作程数流通数流程图抽象现实世界数医院门诊理物理模型根物理模型抽象出信息流物理模型转化成逻辑模型反映信息系统中流动处理存储情况整程中数流程图图11图15示分顶层数流图第层数流图第二层数流图
图11 顶层数流程图
图12 第层数流程图
图13 第二层数流程图(挂号收费)
图14 第二层数流程图(诊断)
图15 第二层数流程图(取药)
12数字典
数字典体统中类数描述集合进行详细数收集数分析获成果数字典数库设计中占重位数字典通常包括数项数结构数流数存储处理逻辑5部分
数项分数单位数结构反映数间组合关系数流数结构系统传输路径数存储数结构停留保存方数流源处理逻辑般判定表判定树描述数字典需描述处理程说明性信息
文中包括35数项8数结构11数流6处理逻辑8数存储
121数项
数项编号
数项名
数项含义
数项关系
类型
长度
取值范围
DI011
Pno
病编号
键
varchar
20
DI012
Pname
病姓名
varchar
20
not null
DI013
Psex
性
varchar
20
DI014
Page
年龄
int
0150
DI015
Dno
医生号
外键
varchar
20
DI021
Dno
医生号
键
varchar
20
DI022
Dname
医生姓名
varchar
20
not null
DI023
Dtitle
职称
varchar
20
DI024
Dtel
电话
varchar
20
DI025
Dp_no
科室编号
外键
varchar
20
DI031
Dp_no
科室编号
键
varchar
20
DI032
Dp_name
科室名称
varchar
20
not null
DI033
Dp_tell
联系方式
varchar
20
DI041
Mno
药品编号
键
varchar
20
DI042
Mname
药品名称
varchar
20
not null
DI043
Mprice
药品价格
float
DI044
Mquantity
药品库存余量
int
DI051
Rno
挂号单号
键
varchar
20
DI052
Rdate
挂号日期
date
DI053
Bno
收费单号
外键
varchar
20
DI054
Pno
病编号
外键
varchar
20
DI055
Dno
医生编号
外键
varchar
20
DI056
Rway
挂号方式
varchar
20
DI061
Bno
收费单号
键
varchar
20
DI062
Bdate
日期
date
DI063
Bmoney
金额
float
DI064
Bway
收费方式
varchar
20
DI071
Pr_no
处方号
键
varchar
20
DI072
Pr_date
日期
date
DI073
Mno
药品编号
外键
varchar
20
DI074
Bno
收费单号
外键
varchar
20
DI081
Dno
医生号
键外键
varchar
20
DI082
Pno
病编号
键外键
varchar
20
DI083
Iname
病名
varchar
20
DI084
Pr_no
处方号
外键
varchar
20
122数结构
数结构编号
数结构名
数结构含义
组成
DS1
Doctor
医生
DnoDnameDtitleDdeptDtel
DS2
Patient
病
PnoPnamePsexPageDno
DS3
Medicine
药品
MnoMnameMpriceMquantity
DS4
Department
科室
Dp_noDp_nameDp_tel
DS5
Register
挂号单
RnoRwayRdatePnoBno
DS6
Bill
收费单
BnoBdateBmoneyBway
DS7
Prescription
处方
Pr_noPr_dateMnoBno
DS8
Diagnose
诊断结果
DnoPnoInamePr_no
123数流
数流编号
数流名称
简述
数流源
数流
数流组成
数流量
高峰流量
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次
124处理逻辑
处理逻辑
处理逻辑名称
简述
输入数流
处理
输出数流
处理频率
P11
挂号
病挂号请求处理
病信息
分配医师
挂号单
1次
P12
收费
收费容标准
收费容
收取费
收费记录
1次
P13
分配医师
根挂号记录分配医师
医生记录
分配医师
医生信息
1次
P21
诊断
医生病情进行诊断
诊断请求
初步诊断
初诊信息
1次
P22
确诊
完成诊断确诊
诊断信息
确诊
诊断结果
1次
P31
取药
取药
处方
取药
药物信息
1次
125数存储
数存储编号
数存储名称
简述
数存储组成
相关处理
S1
挂号记录
记录病挂号信息
病信息医生
P11P21P31
S2
收费记录
记录收费信息
收费信息
P12P22P32P33
S3
值班医生记录
记录医生值班安排
医生值班安排
P31
S4
诊断记录
记录病诊断程
诊断程
P23P31
S5
药物记录
记录药物价格剩余量等
药物信息
P32
S6
收费款项
记录收费情况
收费信息
P12
S7
收费标准
统收费标准
收费款项标准
P12
S8
处方
记录医生病开出处方
处方
P32
2.数库结构设计
数库结构设计包括概念设计逻辑设计两部分
21 概念设计
概念设计阶段务需求分析户需求抽象信息结构(概念模型)程充分反应事物事物间联系现实世界真实模型需求分析阶段应需求首先抽象信息世界结构更某DBMS实现需求ER模型概念模型力工具逐设计分ER图分ER图综合成系统总ER图
211 分ER图建立
图22 分ER图
分ER图建立数流图建立第二层数流图分建立分ER图详见图2123
图21 分ER图
2 诊断分ER图
图23 分ER图
212 全局整体ER图
根述列出分ER图消中存突冗余建立全局ER图(详见图24)列出实体联系属性属性ER图(详见图25)
图24 总ER图
图25 属性ER图
22 逻辑设计
逻辑结构设计务概念结构设计阶段设计基ER图转换选DBMS产品支持数模型相符合逻辑结构根DBMS产品系统限制设计逻辑结构时般三步骤:首先概念结构转换般
关系网状层次模型转换关系网状层次模型特定DBMS支持数模型转换数模型进行优化
医院门诊理系统设计采关系模型ER图转化关系模型实际实体型实体属性实体型间联系转换关系模式
实体型转换关系模式实体属性关系属性实体码关系码实体型间联系情况:
(1)1:1联系转换独立关系模式意端应关系模式合果转换独立关系模式该联系相连实体码联系身属性均转换关系属性
(2)1:n联系转换独立关系模式n端应关系模式合果转换独立关系没模式联系连实体码联系身属性均转换关系属性
(3)m:n联系转换关系模式该联系相连实体码联系身属性均转换关系属性实体码组成关系码关系码部分
221 建立关系模式
医院门诊理系统涉关系:
病医生n:1()关系间联系n端实体合病挂号单关系1:1()间联系意端实体合科室医生1:n()关系间联系n端实体合医生诊断结果关系1:n()关系间联系n端实体合诊断结果处方单关系1:1()间联系意端实体合处方单收费单药品间联系三元关系间联系转换独立关系模式
具体转换示(键加划线外键斜体加粗):
病(病编号病姓名性年龄医生号)
医生(医生号医生姓名职称电话科室号)
药品(药品编号药品名称单价数量)
处方(处方号日期药品编号收费单号)
收费单(收费单号日期金额收费方式)
诊断结果(医生号病编号病名处方号)
挂号单(挂号单号挂号方式日期病编号收费单号)
科室(科室号科室名称联系方式)
222 关系模式规范化处理
关系数库中关系必须满足定规范化求规范化程度范式衡量范式符合某种级关系模式集合衡量关系模式规范化程度标准达关系规范化低级范式关系模式通模式分解转换干高级范式关系模式集合系统中建立关系模式符合三范式
223 户子模式建立
根需求分析研究建立满足需求户子模式子模式建立更程度方便数操作户子模式定义
收费细视图(病号收费单号日期金额收费方式)
病药品视图(病号药品编号)
诊断结果视图(病号病姓名病名)
医生病视图(医生号医生姓名病姓名)
科室医生视图(医生号医生姓名科室名称)
病挂号视图(病号病姓名挂号单号挂号日期挂号方式)
224 关系模式逻辑结构定义
表26 病关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Pno
病编号
varchar
20
Pname
病姓名
varchar
20
not null
Psex
性
varchar
20
Page
年龄
int
0150
Dno
医生号
varchar
20
表27 医生关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Dno
医生号
varchar
20
Dname
医生姓名
varchar
20
not null
Dtitle
职称
varchar
20
Ddept
科室号
varchar
20
Dtel
电话
varchar
20
表28 药品关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Mno
药品编号
varchar
20
Mname
药品名称
varchar
20
not null
Mprice
单价
float
Mquantity
数量
int
表29 处方单关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Pr_no
处方号
varchar
20
Pr_date
日期
date
Mno
药品编号
varchar
20
Bno
收费单号
varchar
20
表210 收费单关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Bno
收费单号
varchar
20
Bdate
日期
date
Bmoney
金额
float
20
Bway
收费方式
varchar
20
表211 诊断结果关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Dno
医生号
varchar
20
Pname
病姓名
varchar
20
Iname
病名
Pr_no
处方号
varchar
20
表212 挂号单关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Rno
挂号单号
varchar
20
Rway
挂号方式
varchar
20
Rdate
日期
date
Pname
病姓名
varchar
20
Bno
收费单号
varchar
20
表213 科室关系模式
属性名
含义
数类型
长度
否属性
否外键
约束条件
Dp_no
科室号
varchar
20
Dp_name
科室名称
varchar
20
not null
Dp_tel
联系方式
varchar
20
3.数库物理设计
包括数库物理设备存储结构存取方法数库物理结构赖选定数库理系统定逻辑数模型选取合适应环境物理结构程数库物理设计阶段务确定数库物理结构断进行优化处理建立索引触发器存储程
索引名称
索引类型
途
idx_bno
唯非聚集
bno属性列升序排列
unique_pname
唯非聚集
实现唯性约束
unique_mname
唯非聚集
实现唯性约束
4.数库实施测试
包括数库实施测试两部分(面分写出SQL Server 2008Oracle实施测试程)
41 SQL Server 2008数库实施测试
411 数库数库象建立
系统建立名Hospital数库数库象分基表视图索引触发器存储程等面分列出相关代码
1基表
create table Department
(Dp_no varchar(20) primary key
Dp_name varchar(20) not null
Dp_tel varchar(20)
)
create table Doctor
(Dno varchar(20) primary key
Dname varchar(20) not null
Dtitle varchar(20)
Dp_no varchar(20) references Department(Dp_no)
Dtel varchar(20)
)
create table Patient
(Pno varchar(20) primary key
Pname varchar(20)
Psex varchar(20)
Page int check(Page>0 and Page<150)
Dno varchar(20) references Doctor(Dno)
)
create table Medicine
(Mno varchar(20) primary key
Mname varchar(20) not null
Mprice float
Mquantity int
)
create table Bill
(Bno varchar(20) primary key
Bdate date
Bmoney float
Bway varchar(20)
)
create table Prescription
(Pr_no varchar(20) primary key
Pr_date date
Mno varchar(20) references Medicine(Mno)
Bno varchar(20) references Bill(Bno)
)
create table Diagnose
(Dno varchar(20) references Doctor(Dno)
Pno varchar(20) references Patient(Pno)
Iname varchar(20)
Pr_no varchar(20) references Prescription(Pr_no)
primary key(DnoPno)
)
create table Register
(Rno varchar(20) primary key
Rway varchar(20)
Rdate date
Pno varchar(20) references Patient(Pno)
Bno varchar(20) references Bill(Bno)
)
2视图
(1)收费细视图(BillDetail)
create view BillDetail
as
select distinct DiagnosepnoBillBnoBdateBmoneyBway
from PrescriptionBillDiagnoseRegister
where RegisterpnoDiagnosepno and (DiagnosePr_noPrescriptionPr_no and PrescriptionbnoBillbno
or RegisterbnoBillbno)
(2)病药品视图(Patient_Med)
create view Patient_Med
as
select PnoMname
from MedicinePrescriptionDiagnose
where MedicineMnoPrescriptionmno and DiagnosePr_noPrescriptionPr_no
(3)诊断结果视图(Patient_Diag)
create view Patient_Diag
as
select Patientpnopnameiname
from PatientDiagnose
where DiagnosePnoPatientpno
(4)医生病视图(Docter_Patient)
create view Docter_Patient
as
select Doctordnodnamepname
from PatientDoctor
where PatientdnoDoctordno
(5)科室医生视图(Dept_Doctor)
create view Dept_Doctor
as
select dnodnameDp_name
from DoctorDepartment
where DepartmentDp_noDoctorDp_no
(6)病挂号视图(Patient_Register)
create view Patient_Register
as
select Patientpnopnamernorwayrdate
from PatientRegister
where RegisterpnoPatientpno
3索引
create unique index unique_mname on Medicine(Mname)
create unique index unique_pname on Patient(pname)
create index idx_bno on Bill(bno asc)
4存储程
(1)患者通方式挂号时Register新增条挂号信息时Patient表添加病记录Bill表中添加条挂号收费记录
create proc addpatient
@Rno varchar(20)
@Rway varchar(20)
@Pno varchar(20)
@Bno varchar(20)
@Pname varchar(20)
@Psex varchar(20)
@Page int
@Dno varchar(20)
@Bmoney float
as
insert into Patient
values(@Pno@Pname@Psex@Page@Dno)
insert into Bill
values(@BnoGETDATE()@Bmoney'挂号收费')
insert into Register
values(@Rno@RwayGETDATE()@Pno@Bno)
(2)患者确诊完毕Diagnose新增条诊断结果记录时Prescription表添加条处方记录更新Bill表中相应收费信息
create proc addDiagnose
@Dno varchar(20)
@Pno varchar(20)
@Iname varchar(20)
@Pr_no varchar(20)
@Mno varchar(20)
@Bno varchar(20)
@Bmoney float
as
insert into Bill
values(@BnoGETDATE()@Bmoney'药品收费')
insert into Prescription
values(@Pr_noGETDATE()@Mno@Bno)
insert into Diagnose
values(@Dno@Pno@Iname@Pr_no)
(4)插入条药品信息
create proc MedicineInsert
@mno varchar(20)
@mname varchar(20)
@mprice float
@mquantity int
as
insert into Medicine
values(@Mno@Mname@Mprice@Mquantity)
(4)修改某科室电话
create proc change_tel
@dp_no varchar(20)
@Dp_tel varchar(20)
as
update Department
set dp_tel@Dp_tel
where Dp_no@dp_no
(5)修改某药品剩余量
create proc change_med
@mno varchar(20)
@mquantity int
as
update Medicine
set mquantity@mquantity
where mno@mno
(6)Dept_Doctor查询医院门诊部科室医生数
create proc Dept_Doc
as
select Dp_nameCOUNT(dno) as rs
from Dept_Doctor
group by Dp_name
(7)Docter_Patient查询某病治医生信息
create proc p_doctor
@pname varchar(20)
as
select *
from Doctor
where Dno (select Dno from Docter_Patient where pname@pname)
(8)Docter_Patient查询某医生治全部病信息
create proc D_Patient
@dno varchar(20)
as
select pnopnamepsexpage
from Patient
where pname in(select pname from Docter_Patient where dno@dno)
(9)Patient_Diag查询患感病姓名
create proc Diag_p
as
select pname
from Patient_Diag
where iname'感'
(10)Patient_Diag查询某病诊断结果
create proc p_Diag
@pno varchar(20)
as
select iname
from Patient_Diag
where pno@pno
(11)Patient_Med查询某病购买药品
create proc p_Med
@pno varchar(20)
as
select mname
from Patient_Med
where pno@pno
(12)BillDetail查询某病购买药品总价
create proc medpay
@pno varchar(20)
as
select Bwaybmoney
from BillDetail
where pno@pno and Bway'药品收费'
(13)BillDetail查询某病收费总(挂号+取药)
create proc pay
@pno varchar(20)
as
select sum(bmoney) as total
from BillDetail
where pno@pno
group by pno
(14)Patient_Register查询某病挂号方式
create proc reg_way
@pno varchar(20)
as
select rway
from Patient_Register
where pno@pno
5触发器
处方表(Prescription)中添加元组时步表Medicine级联更新(药品数量1)
create trigger t1 on Prescription
after insertupdate
as
declare @pr_no varchar(20)@mno varchar(20)
declare c2 cursor for select pr_nomno from inserted
open c2
fetch next from c2 into @pr_no@mno
while(@@fetch_status0)
begin
update Medicine
set mquantitymquantity1
where mno@mno
fetch next from c2 into @pr_no@mno
end
close c2
deallocate c2
412 数入库
Patient表
Register表
Department表
Doctor表
Medicine表
Prescription表
Diagnose表
Bill表
413 数库测试
1视图
病药品视图(Patient_Med)
收费细视图(BillDetail)
诊断结果视图(Patient_Diag)
医生病视图(Docter_Patient)
科室医生视图(Dept_Doctor)
病挂号视图(Patient_Register)
2验证存储程
(1)患者通方式挂号时Register新增条挂号信息时Patient表添加病记录Bill表中添加条挂号收费记录
(2)患者确诊完毕Diagnose新增条诊断结果记录时Prescription表添加条处方记录更新Bill表中相应收费信息
(3)插入条药品信息
(4)修改某科室电话
(5)修改某药品剩余量
(6)Dept_Doctor查询医院门诊部科室医生数
(7)Docter_Patient查询某病治医生信息
(8)Docter_Patient查询某医生治全部病信息
(9)Patient_Diag查询患感病姓名
(10)Patient_Diag查询某病诊断结果
(11)Patient_Med查询某病购买药品
(12)BillDetail查询某病购买药品总价
(13)BillDetail查询某病收费总(挂号+取药)
(14)Patient_Register查询某病挂号方式
3验证触发器
(见存储程2验证)
42 Oracle数库实施测试
421 数库数库象建立
系统建立名Hospital数库数库象分基表视图存储程等面分列出相关代码
1基表
create table Department
(Dp_no varchar(20) primary key
Dp_name varchar(20) not null
Dp_tel varchar(20)
)
create table Doctor
(Dno varchar(20) primary key
Dname varchar(20) not null
Dtitle varchar(20)
Dp_no varchar(20) references Department(Dp_no)
Dtel varchar(20)
)
create table Patient
(Pno varchar(20) primary key
Pname varchar(20)
Psex varchar(20)
Page int check(Page>0 and Page<150)
Dno varchar(20) references Doctor(Dno)
)
create table Medicine
(Mno varchar(20) primary key
Mname varchar(20) not null
Mprice float
Mquantity int
)
create table Bill
(Bno varchar(20) primary key
Bdate date
Bmoney float
Bway varchar(20)
)
create table Prescription
(Pr_no varchar(20) primary key
Pr_date date
Mno varchar(20) references Medicine(Mno)
Bno varchar(20) references Bill(Bno)
)
create table Diagnose
(Dno varchar(20) references Doctor(Dno)
Pno varchar(20) references Patient(Pno)
Iname varchar(20)
Pr_no varchar(20) references Prescription(Pr_no)
primary key(DnoPno)
)
create table Register
(Rno varchar(20) primary key
Rway varchar(20)
Rdate date
Pno varchar(20) references Patient(Pno)
Bno varchar(20) references Bill(Bno)
)
2视图
(1)收费细视图(BillDetail)
create view BillDetail
as
select distinct DiagnosepnoBillBnoBdateBmoneyBway
from PrescriptionBillDiagnoseRegister
where RegisterpnoDiagnosepno and (DiagnosePr_noPrescriptionPr_no and PrescriptionbnoBillbno
or RegisterbnoBillbno)
(2)病药品视图(Patient_Med)
create view Patient_Med
as
select PnoMname
from MedicinePrescriptionDiagnose
where MedicineMnoPrescriptionmno and DiagnosePr_noPrescriptionPr_no
(3)诊断结果视图(Patient_Diag)
create view Patient_Diag
as
select Patientpnopnameiname
from PatientDiagnose
where DiagnosePnoPatientpno
(4)医生病视图(Docter_Patient)
create view Docter_Patient
as
select Doctordnodnamepname
from PatientDoctor
where PatientdnoDoctordno
(5)科室医生视图(Dept_Doctor)
create view Dept_Doctor
as
select dnodnameDp_name
from DoctorDepartment
where DepartmentDp_noDoctorDp_no
(6)病挂号视图(Patient_Register)
create view Patient_Register
as
select Patientpnopnamernorwayrdate
from PatientRegister
where RegisterpnoPatientpno
3存储程
(1)患者通方式挂号时Register新增条挂号信息时Patient表添加病记录Bill表中添加条挂号收费记录
create or replace procedure addpatient
(v_Rno varcharv_Rway varcharv_Pno varcharv_Bno varcharv_Pname varcharv_Psex varcharv_Page intv_Dno varcharv_Bmoney float)
is
begin
insert into Patient
values(v_Pnov_Pnamev_Psexv_Pagev_Dno)
insert into Bill
values(v_Bnosysdate()v_Bmoney'挂号收费')
insert into Register
values(v_Rnov_Rwaysysdate()v_Pnov_Bno)
end addpatient
begin
addpatient('R021''电话预约''P021''B042''张三''男'18'D014'21)
end
(2)插入条药品信息
create or replace procedure MedicineInsert
(mno varcharmname varcharmprice floatmquantity int)
is
begin
insert into Medicine
values(MnoMnameMpriceMquantity)
end MedicineInsert
begin
MedicineInsert('M043''克拉霉素胶囊(桑美)'98200)
end
(3)修改某科室电话
create or replace procedure change_tel(v_dp_no varcharv_Dp_tel varchar)
is
begin
update Department
set dp_telv_Dp_tel
where Dp_nov_dp_no
commit
end change_tel
begin
change_tel('Dp011''87051621')
end
(4)修改某药品剩余量
create or replace procedure change_med(v_mno varchar v_mquantity int)
is
begin
update Medicine
set mquantityv_mquantity
where mnov_mno
commit
end change_med
begin
change_med('M024'150)
end
(5)Dept_Doctor查询医院门诊部科室医生数
create or replace procedure Dept_Doc(Dp_name out varcharrs out number)
is
cursor c1 is select Dp_nameCOUNT(dno) as rs from Dept_Doctor group by Dp_name
begin
open c1
loop
fetch c1 into Dp_namers
exit when c1notfound
dbms_outputput_line(Dp_name||' '||rs)
end loop
close c1
end Dept_Doc
declare
a varchar(20)
b number
begin
Dept_Doc(ab)
end
(6)Docter_Patient查询某病治医生信息
create or replace procedure p_doctor(v_pname varcharv_dno out varcharv_dname out varcharv_dtitle out varcharv_dp_no out varcharv_dtel out varchar)
is
begin
select dnodnamedtitledp_nodtel
into v_dnov_dnamev_dtitlev_dp_nov_dtel
from Doctor
where Dno (select Dno from Docter_Patient where pnamev_pname)
dbms_outputput_line(v_dno||' '||v_dname||' '||v_dtitle||' '||v_dp_no||' '||v_dtel)
end p_doctor
declare
f varchar(20)'张三'
a varchar(20)
b varchar(20)
c varchar(20)
d varchar(20)
e varchar(20)
begin
p_doctor(fabcde)
end
(7)Docter_Patient查询某医生治全部病信息
create or replace procedure D_Patient(v_dno varcharpno out varcharpname out varcharpsex out varcharpage out varchar)
is
cursor c1 is select pnopnamepsexpage from Patient
where pname in(select pname from Docter_Patient where dnov_dno)
begin
open c1
loop
fetch c1 into pnopnamepsexpage
exit when c1notfound
dbms_outputput_line(pno||' '||pname||' '||psex||' '||page)
end loop
close c1
end D_Patient
declare
f varchar(20)'D017'
a varchar(20)
b varchar(20)
c varchar(20)
d varchar(20)
begin
D_Patient(fabcd)
end
(8)Patient_Diag查询患感病姓名
create or replace procedure Diag_p(pname out varchar)
is
cursor c1 is select pname from Patient_Diag where iname'感'
begin
open c1
loop
fetch c1 into pname
exit when c1notfound
dbms_outputput_line(pname)
end loop
close c1
end Diag_p
declare
a varchar(20)
begin
Diag_p(a)
end
(9)Patient_Diag查询某病诊断结果
create or replace procedure p_Diag(v_pno varcharv_iname out varchar) is
begin
select iname
into v_iname
from Patient_Diag
where pnov_pno
dbms_outputput_line(v_iname)
end p_Diag
declare
a varchar(20)
begin
p_Diag('P019'a)
end
(10)Patient_Med查询某病购买药品
create or replace procedure p_Med(v_pno varcharv_mname out varchar)
is
begin
select mname
into v_mname
from Patient_Med
where pnov_pno
dbms_outputput_line(v_mname)
end p_Med
declare
a varchar(20)
begin
p_Med('P020'a)
end
(11)BillDetail查询某病购买药品总价
create or replace procedure medpay(v_pno varcharv_Bway out varcharv_bmoney out varchar)
is
begin
select Bwaybmoney
into v_bwayv_bmoney
from BillDetail
where pnov_pno and Bway'药品收费'
dbms_outputput_line(v_bway||' '||v_bmoney)
end medpay
declare
a varchar(20)
b varchar(20)
begin
medpay('P002'ab)
end
(12)BillDetail查询某病收费总(挂号+取药)
create or replace procedure pay(v_pno varcharv_total out number)
is
begin
select sum(bmoney) as total
into v_total
from BillDetail
where pnov_pno
group by pno
dbms_outputput_line(v_total)
end pay
declare
a number
begin
pay('P005'a)
end
(13)Patient_Register查询某病挂号方式
create or replace procedure reg_way(v_pno varcharv_rway out varchar)
is
begin
select rway
into v_rway
from Patient_Register
where pnov_pno
dbms_outputput_line(v_rway)
end reg_way
declare
a varchar(20)
begin
reg_way('P011'a)
end
422 数入库
Bill表
Department表
Patient表
Doctor表
Medicine表
Diagnose表
Prescription表
Register表
423 数库测试
1视图
收费细视图(BillDetail)
诊断结果视图(Patient_Diag)
医生病视图(Docter_Patient)
科室医生视图(Dept_Doctor)
病挂号视图(Patient_Register)
2验证存储程
(1)患者通方式挂号时Register新增条挂号信息时Patient表添加病记录Bill表中添加条挂号收费记录
(2)患者确诊完毕Diagnose新增条诊断结果记录时Prescription表添加条处方记录更新Bill表中相应收费信息
(3)插入条药品信息
(4)修改某科室电话
(5)修改某药品剩余量
(6)Dept_Doctor查询医院门诊部科室医生数
(7)Docter_Patient查询某病治医生信息
(8)Docter_Patient查询某医生治全部病信息
(9)Patient_Diag查询患感病姓名
(10)Patient_Diag查询某病诊断结果
(11)Patient_Med查询某病购买药品
(12)BillDetail查询某病购买药品总价
(13)BillDetail查询某病收费总(挂号+取药)
(14)Patient_Register查询某病挂号方式
5. 总结
通次期三周数库课程设计心体会:
1.学期数库原理应课程学中数库系统认识够深刻时做练老师定表做简单查询删更新工作次实中遇问题:题目医院门诊理系统现实世界抽象遇较问题觉力系统实现业务老师指导发现复杂
2.实时深刻感受数库设计环环嵌套做需求分析数流图根画出ER图抽象出实体间联系列出关系模型会期工作利展开否果样轻视第环节会实施阶段发现漏洞白醋折回接着做需求分析开始花量时间做需求分析
次实中时完成数库课程设计求时学收获断实践中发现数库领域高深莫测真心希机会进入领域深入探究
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档