医院病例数据库管理系统设计.docx

上传人:b****6 文档编号:13576858 上传时间:2023-06-15 格式:DOCX 页数:19 大小:690.48KB
下载 相关 举报
医院病例数据库管理系统设计.docx_第1页
第1页 / 共19页
医院病例数据库管理系统设计.docx_第2页
第2页 / 共19页
医院病例数据库管理系统设计.docx_第3页
第3页 / 共19页
医院病例数据库管理系统设计.docx_第4页
第4页 / 共19页
医院病例数据库管理系统设计.docx_第5页
第5页 / 共19页
医院病例数据库管理系统设计.docx_第6页
第6页 / 共19页
医院病例数据库管理系统设计.docx_第7页
第7页 / 共19页
医院病例数据库管理系统设计.docx_第8页
第8页 / 共19页
医院病例数据库管理系统设计.docx_第9页
第9页 / 共19页
医院病例数据库管理系统设计.docx_第10页
第10页 / 共19页
医院病例数据库管理系统设计.docx_第11页
第11页 / 共19页
医院病例数据库管理系统设计.docx_第12页
第12页 / 共19页
医院病例数据库管理系统设计.docx_第13页
第13页 / 共19页
医院病例数据库管理系统设计.docx_第14页
第14页 / 共19页
医院病例数据库管理系统设计.docx_第15页
第15页 / 共19页
医院病例数据库管理系统设计.docx_第16页
第16页 / 共19页
医院病例数据库管理系统设计.docx_第17页
第17页 / 共19页
医院病例数据库管理系统设计.docx_第18页
第18页 / 共19页
医院病例数据库管理系统设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

医院病例数据库管理系统设计.docx

《医院病例数据库管理系统设计.docx》由会员分享,可在线阅读,更多相关《医院病例数据库管理系统设计.docx(19页珍藏版)》请在冰点文库上搜索。

医院病例数据库管理系统设计.docx

医院病例数据库管理系统设计

--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--

 

医院病例数据库管理系统设计(共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病人编号=@病人编号

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2