医院病例数据库管理系统设计.docx
- 文档编号:26062012
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:19
- 大小:690.48KB
医院病例数据库管理系统设计.docx
《医院病例数据库管理系统设计.docx》由会员分享,可在线阅读,更多相关《医院病例数据库管理系统设计.docx(19页珍藏版)》请在冰豆网上搜索。
医院病例数据库管理系统设计
--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--
医院病例数据库管理系统设计(共10页)
题目:
医院病例数据库管理系统
学院管理与经济学部
专业工程管理
年级2012级
成员王艳旭(一班)54
需求分析,E-R图,数据修改,数据插入
杨志东(二班)
逻辑设计,物理设计,数据表、索引建立
谢中仁(二班)
视图建立,存储过程的建立
2013年12月16日
目录:
一、需求分析····················································3
1)医生信息管理
2)病人病例和病房管理
(1)数据检索
(2)数据插入
(3)数据修改
(4)数据统计与查询
二、概念设计····················································4
(1)医生实体
(2)职位实体
(3)病人实体
(4)病房实体
(5)全局E-R图
三、逻辑设计····················································6
四、物理设计····················································6
五、系统实现····················································8
1、数据库的建立
2、数据表的建立
3、数据的输入
4、索引的创建
5、视图的创建
6、存储过程的创建
一、需求分析
实现某医院病例数据库管理系统,系统使用对象是系统管理员,医生和病人,要求完成以下工作:
1)医生信息管理,包括
系统管理员进行新医生到岗、现有医生离职处理
系统管理员可以修改任何医生的所有信息,如姓名、年龄、职称、科室
医生可以查阅自己的信息并修改其中某些基本信息,如联系方式等
2)病人病例和病房管理
医生可以添加新病人,修改或删除已有病人的信息
医生可以添加新的病例记录,形成病人治疗日志。
管理员可以任意查询所有医生或病人的情况和病例
管理员可以统计任意医生的病人或者任意病人的病例
病人能查看自己的基本信息和病例信息
(1)数据检索
i.系统管理员查询所有医生的情况
输入:
医生编号
输出:
姓名、年龄、联系方式、职称、科室。
ii.系统管理员查询所有病人的基本信息
输入:
病号
输出:
姓名、年龄、联系方式、地址。
iii.系统管理员查询所有病人的病例
输入:
病号
输出:
姓名、诊断结果、就诊日期、病房号、床号、入住日期、出院日期。
iv.医生查询自己的信息
输入:
医生编号
输出:
姓名、年龄、联系方式、职称、科室。
v.医生查询病人的病例
输入:
病号
输出:
姓名、诊断结果、就诊日期、病房号、床号、入住日期。
vi.病人查询自己的基本信息
输入:
病号
输出:
姓名、年龄、联系方式、地址。
vii.病人查询自己的病例
输入:
病号
输出:
姓名、诊断结果、就诊时间、病房号、床号、入住日期。
(2)数据插入
i.系统管理员插入医生数据。
ii.医生插入病人数据。
(3)数据修改
i.系统管理员修改所有医生的信息:
医生编号、姓名、年龄、联系方式、职称、科室、任职时间。
ii.医生修改自己的部分信息:
联系方式。
iii.医生修改病人的信息:
姓名、年龄、联系方式、地址、诊断结果、就诊日期、病房号、床号、入住日期。
(4)数据统计与查询
i.管理员:
显示所有医生的情况。
ii.管理员:
显示所有病人的情况。
iii.管理员:
显示所有医生的全部病人。
iv.管理员:
显示所有病人的全部病例。
二、概念设计
概念设计的任务是,在需求分析中产生的需求说明的基础上,抽象出满足应用需求的用户的信息结构,即概念模型。
经需求分析,抽象出以下E—R模型。
(1)医生实体(图1)
(2)职位实体(图2)
(3)病人实体(图3)
(4)病房实体(图4)
(5)全局E—R图(图5)
三、逻辑设计
逻辑设计阶段将概念设计阶段产生的E-R图转换成RDBMS所支持的数据模型,即关系模型。
根据图5的E-R图转换为以下关系模式:
医生(医生编号,姓名,年龄,联系方式,职位编号,任职时间)
职位(职位编号,职称,所属科室)
病人(病人编号,姓名,年龄,联系方式,住址)
病房(病房号,病床数,病房联系电话)
入住(病人编号,病房号,床位号,入住时间),主键为(病人编号,病房号)
就诊(病人编号,医生编号,诊断结果,就诊日期),主键为(病人编号,医生号)
查房(医生编号,病房号,值班时间),主键为(医生编号,病房号)
其中带有下划直线的属性为主键,带有下划波浪线的属性为外键。
以上关系模式均满足3NF。
四、物理设计
物理设计阶段将关系模式设计为具体的RDBMS中的数据表。
根据以上关系模式构建的数据表结构如表1~7所示。
表1医生表结构
字段名类型特殊属性
医生编号char(4)PRIMARYKEY
姓名char(10)NOTNULL
年龄char(10)NOTNULL
联系方式char(20)NOTNULL
职位编号char(4)FOREIGNKEY
任职时间char(20)NOTNULL
表2职位表结构
字段名类型特殊属性
职位编号char(4)PRIMARYKEY
职称char(10)NOTNULL
所属科室char(10)
表3病人表结构
字段名类型特殊属性
病人编号char(4)PRIMARYKEY
姓名char(10)NOTNULL
年龄char(10)NOTNULL
联系方式char(20)NOTNULL
住址varchar(30)
表4病房表结构
字段名类型特殊属性
病房号char(4)PRIMARYKEY
病床数int
病房联系方式char(11)
表5入住表结构
字段名类型特殊属性
病人编号char(4)PRIMARYKEY,FOREIGNKEY
病房号char(4)PRIMARYKEY,FOREIGNKEY
床位号char(4)NOTNULL
入住时间char(20)NOTNULL
表6就诊表结构
字段名类型特殊属性
病人编号char(4)PRIMARYKEY,FOREIGNKEY
医生编号char(4)PRIMARYKEY,FOREIGNKEY
诊断结果varchar(100)NOTNULL
就诊时间char(20)
表7查房表结构
字段名类型特殊属性
医生编号char(4)PRIMARYKEY,FOREIGNKEY
病房号char(4)PRIMARYKEY,FOREIGNKEY
值班时间char(20)NOTNULL
五、系统实现
1.数据库的建立
Createdatabase医院病例
Onprimary
(name=医院病例_data,filename='E:
\\医院病例')
Logon
(name=医院病例_log,filename='E:
\\医院病例')
2.数据表的建立
Use医院病例
Go
Createtable职位
(职位编号char(4)PRIMARYKEY,
职称char(10)NOTNULL,
所属科室char(10)
)
Createtable医生
(医生编号char(4)PRIMARYKEY,
姓名char(10)NOTNULL,
年龄char(10)NOTNULL,
联系方式char(20)NOTNULL,
职位编号char(4),
任职时间char(20)NOTNULL,
FOREIGNKEY(职位编号)references职位(职位编号)
)
Createtable病人
(病人编号char(4)PRIMARYKEY,
姓名char(10)NOTNULL,
年龄char(10)NOTNULL,
联系方式char(20)NOTNULL,
住址varchar(30)
)
Createtable病房
(病房号char(4)PRIMARYKEY,
病床数int,
病房联系方式char(11)
)
Createtable入住
(病人编号char(4),病房号char(4),
床位号char(4)NOTNULL,
入住时间char(20)NOTNULL,
PRIMARYKEY(病人编号,病房号),
FOREIGNKEY(病人编号)references病人(病人编号),
FOREIGNKEY(病房号)references病房(病房号)
)
Createtable就诊
(病人编号char(4),医生编号char(4),
诊断结果varchar(100)NOTNULL,
就诊时间char(20),
PRIMARYKEY(病人编号,医生编号),
FOREIGNKEY(病人编号)references病人(病人编号),
FOREIGNKEY(医生编号)references医生(医生编号),
)
Createtable查房
(医生编号char(4),病房号char(4),
值班时间char(20)NOTNULL,
PRIMARYKEY(医生编号,病房号),
FOREIGNKEY(医生编号)references医生(医生编号),
FOREIGNKEY(病房号)references病房(病房号)
)
3.数据的输入
Insertinto职位
Values('J1','眼科医生','眼科室')
Insertinto职位
Values('J2','内科医生','内科室')
Insertinto医生
Values('D001','李明','45','139****1111','J1',)
Insertinto医生
Values('D002','张强','50','139****2222','J2',)
Insertinto医生
Values('D003','陈龙','54','139****3333','J1',)
Insertinto医生
Values('D004','刘红','36','139****4444','J2',)
Insertinto病人
Values('P001','张三','30','159****1111','北京市')
Insertinto病人
Values('P002','李四','39','159****2222','天津市')
Insertinto病人
Values('P003','王五','44','159****3333','廊坊市')
Insertinto病人
Values('P004','赵六','27','159****4444','唐山市')
Insertinto病房
Values('R101','4',)
Insertinto病房
Values('R102','2',)
Insertinto入住
Values('P003','R101','1',)
Insertinto入住
Values('P004','R102','2',)
Insertinto就诊
Values('P001','D001','白内障',)
Insertinto就诊
Values('P002','D003','青光眼',)
Insertinto就诊
Values('P003','D002','阑尾炎',)
Insertinto就诊
Values('P004','D004','胃出血',)
Insertinto查房
Values('D001','R101',)
Insertinto查房
Values('D002','R102',)
4.索引的创建
(1)医生表:
按医生任职时间降序排列
Createindex医生_任职时间on医生(任职时间desc)
(2)病人表:
按病人编号升序排列
Createindex病人_病人编号on病人(病人编号)
(3)职位表:
按职位编号升序排列
Createindex职位_职位编号on职位(职位编号)
(4)病房表:
按病房号升序排列
Createindex病房_病房号on病房(病房号)
5.视图的创建
①医生情况视图:
显示所有医生的情况
createview医生情况视图
as
select医生.医生编号,姓名,年龄,联系方式,职位.职称,所属科室
from医生join职位on医生.职位编号=职位.职位编号
②病人情况视图:
显示所有病人的情况
Createview病人情况视图
as
Select*
From病人
③医生与病人视图:
显示任意医生的全部病人
Createview医生与病人视图
as
Select医生.姓名as医生姓名,病人.姓名as病人姓名
From
就诊join医生on医生.医生编号=就诊.医生编号
Join病人on病人.病人编号=就诊.病人编号
④病例视图:
显示病人病例
createview病例视图
as
Select病人.姓名,就诊.*
From病人join就诊on病人.病人编号=就诊.病人编号
6.存储过程的创建
(1)检索数据
①管理员对医生检索:
输入医生编号,返回医生的姓名\年龄\联系方式\职称\科室
Createprocedure管理员对医生检索(@ynoint=null)
As
If@ynoisnull
Begin
Print'请输入医生编号'
End
Else
Begin
Select医生.年龄,姓名,联系方式,职位.职称,所属科室
From医生join职位on医生.职位编号=职位.职位编号
Where@yno=医生.医生编号
End
②管理员查询病人基本信息检索:
输入病人编号,返回病人的姓名、年龄、联系方式、地址
Createprocedure管理员查询病人基本信息检索(@Bnoint=null)
As
If@Bnoisnull
Begin
Print'请输入病人编号'
End
Else
Begin
Select病人.姓名,年龄,联系方式,住址
From病人
End
③病例检索:
输入病人编号,返回姓名、诊断结果、就诊日期、病房号、床号、入住日期
Createprocedure病例检索(@Bno2int=null)
As
If@Bno2isnull
Begin
Print'请输入病人编号来查询病例'
End
Else
Begin
Select病人.病人编号,姓名,就诊.诊断结果,就诊时间,入住.病房号,床位号,入住时间
From病人join就诊on病人.病人编号=就诊.病人编号
Join入住on入住.病人编号=病人.病人编号
End
④医生对个人信息检索:
输入医生编号,返回医生的姓名\年龄\联系方式\职称\科室
Createprocedure医生对个人信息检索(@ynoint=null)
As
If@ynoisnull
Begin
Print'请输入医生编号'
End
Else
Begin
Select医生.年龄,姓名,联系方式,职位.职称,所属科室
From医生join职位on医生.职位编号=职位.职位编号
Where@yno=医生.医生编号
End
⑤医生查询病人病例检索:
输入病人编号,返回姓名、诊断结果、就诊日期、病房号、床号、入住日期
Createprocedure医生查询病人病例检索(@Bno2int=null)
As
If@Bno2isnull
Begin
Print'请输入病人编号来查询病例'
End
Else
Begin
Select病人.病人编号,姓名,就诊.诊断结果,就诊时间,入住.病房号,床位号,入住时间
From病人join就诊on病人.病人编号=就诊.病人编号
Join入住on入住.病人编号=病人.病人编号
End
⑥病人查询病人基本信息检索:
输入病人编号,返回病人的姓名、年龄、联系方式、地址
Createprocedure病人查询病人基本信息检索(@Bnoint=null)
As
If@Bnoisnull
Begin
Print'请输入病人编号'
End
Else
Begin
Select病人.姓名,年龄,联系方式,住址
From病人
End
⑦病人查询病人病例检索:
输入病人编号,返回姓名、诊断结果、就诊日期、病房号、床号、入住日期
Createprocedure病人查询病人病例检索(@Bno2int=null)
As
If@Bno2isnull
Begin
Print'请输入病人编号来查询病例'
End
Else
Begin
Select病人.病人编号,姓名,就诊.诊断结果,就诊时间,入住.病房号,床位号,入住时间
From病人join就诊on病人.病人编号=就诊.病人编号
Join入住on入住.病人编号=病人.病人编号
End
(2)插入数据
①系统管理员插入医生数据.
Createprocedure系统管理员插入医生数据(@医生编号char(10),@姓名char(10),@年龄char(10),@联系方式char(20),@职位编号char(4),@任职时间char(20),@职称char(10),@所属科室char(10))
As
Insertinto医生
Values(@医生编号,@姓名,@年龄,@联系方式,@职位编号,@任职时间)
Insertinto职称
Values(@职位编号,@职称,@所属科室)
②医生插入病人数据
createprocedure医生插入病人数据(@病人编号char(4),@姓名char(10),@年龄char(10),@联系方式char(20),@住址char(30))
As
Insertinto病人
Values(@病人编号,@姓名,@年龄,@联系方式,@住址)
(3)数据修改
a)医生信息修改
Createprocedure医生信息修改(@医生编号char(4),@姓名char(10)=姓名,@年龄char(10)=年龄,@联系方式char(20)=联系方式,@职位编号char(4)=职位编号,@任职时间char(20)=任职时间)
As
Update医生
Set姓名=@姓名,年龄=@年龄,联系方式=@联系方式,职位编号=@职位编号,任职时间=@任职时间
Where医生编号=@医生编号
b)医生部分信息修改
Createprocedure医生部分信息修改(@医生编号char(4),@联系方式char(20)=联系方式)
As
Update医生
Set联系方式=@联系方式
c)病人信息修改
Createprocedure病人信息修改(@病人编号char(4),@姓名char(10)=姓名,@年龄char(10)=年龄,@联系方式char(20)=联系方式,@住址varchar(30)=住址)
As
Update病人
Set姓名=@姓名,年龄=@年龄,联系方式=@联系方式,住址=@住址
Where病人编号=@病人编号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医院 病例 数据库 管理 系统 设计