医院住院病人管理数据库设计Word文件下载.docx
- 文档编号:7748531
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:18
- 大小:313.36KB
医院住院病人管理数据库设计Word文件下载.docx
《医院住院病人管理数据库设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《医院住院病人管理数据库设计Word文件下载.docx(18页珍藏版)》请在冰点文库上搜索。
住院数据库实体及其属性如下图:
1
编号
姓名
性别
病床情况
病房医生
年龄收费标准
所属科室职称
电话号码
病案号
部门
科室编号
科室名病人科室信息年龄
电话
主管医生姓名
病房编号
主治医师
(2)分E-R图设计
在本次设计中,根据任务书所提供的业务规则,实体和实体之间可以有以下几种联系:
1)医生与病人之间的联系,它们之间的联系图如图1所示;
2)病人与病房以及病房与病床之间的联系,它们之间的联系图如图2所示;
3)医生与科室信息之间的联系,它们之间的联系图如图3所示;
2
1:
病人与医生联系图
nn医生病人治疗人
2:
病人与病房及病房与病床联系图
n1病人病房住在人人
1n病房病床拥有人人
3:
医生与科室信息之间的联系
11医生科室名办公
(一般来说,一个医生拥有一个办公科室)
(3)基本E-R图设计
对于分E-R图,它们之间往往存在一些不一致的地方,即冲突。
合并时不能简单的将上述的各
个分E-R图画在一起,必须要消除各个分E-R图中的不一致,以形成一个能为全系统所有用户所共
同理解和接受的统一的概念模型。
在上述分E-R图上可以做出修改,最终形成的基本E-R图如下图所示:
医院住院数据库基本E-R图:
3
n1医生病人治疗
n1
住在办公
11病房科室
2、数据表设计:
将E-R图转换为数据表,给出创建各表的SQL语句。
一:
关系模型设计
关系模型的逻辑结构是一组关系模式的集合。
将E-R图转换为关系模型实际上就是将实体型、实体型的属性和实体之间的联系转换为一组关系模式,这种转换需要遵守以下原则:
1.一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
2.对于实体之间的联系有以下几种情况:
(1)一个1:
1的联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
(2)一个1:
n的联系可以转换成为一个独立的关系模式,也可以与n端对应的关系模式合并。
(3)一个m:
n的联系转换为一个关系模式。
(4)3个或者3个以上的实体之间的一个多元联系可以转换为一个关系模式。
(5)具有相同码的关系模式可以合并。
按照上述的原则,根据设计好的E-R图,可以将其转换为以下一组关系模式,其中关系模式的码用下横线标出。
1病人(病案号,姓名,性别,电话号码,病房编号)
此为病人实体型所对应的关系模式。
其中病案号为次关系模式的码,而病房编号为该关系模
4
式的外码。
2病房(病房编号,收费标准,所属科室,病床号)
此为病房实体型所对应的关系模式。
其中病房编号唯一确定一个病房,所以为该关系模式的码。
3医生(医生编号,姓名,性别,职称,电话号码,部门)
此为医生实体型所对应的关系模式。
其中医生编号唯一确定一个医生,所以为该关系模式的码。
4科室信息(科室编号,科室名,电话,主治医生姓名)
此为科室实体型所对应的关系模式。
其中科室编号唯一确定一个科室,所以为该关系模式的码。
数据字典:
1病人信息的数据项描述:
数据项名数据项含义类型长度允许空备注
NOTNULL病案号病人的编号VARCHAR15(主键)对应唯一
一个病人
姓名病人姓名VARCHAR20NULL
性别病人性别CHAR2NULL只能取‘男’或
‘女’
年龄病人年龄char50NULL
电话病人电话VARCHAR12NULL
病房编号CHAR4NULL住院时由系统分
配
病床号int2NULL一个病房一般有
1-3个床位
主治医师CHAR50NULL
2病房信息的数据项描述:
数据项名数据项含类型长度允许空备注
义
NOTNULL病房编号病房编号CHAR50(主键)病房编号
5
唯一收费标准INT4NULL单位为(元/天)所属科室VARCHAR50NULL病床情况char50NULL一个病房一般有
3医生信息的数据项描述:
NOTNULL医生编号医生编号VARCHAR50(主键)对应唯一
一个医生姓名医生姓名VARCHAR50NULL性别医生性别CHAR2NULL只能取‘男’或
‘女’年龄医生年龄CHAR50职称医生职称VARCHAR50NULL有可能有多个职
称电话医生电话VARCHAR50NULL科室编号所属部门VARCHAR50NULL
4科室信息的数据项描述:
NOTNULL编号科室编号CHAR50(主键)科室编号
唯一科室名VARCHAR50NULL电话VARCHAR50NULL主治医生VARCHAR50NULL姓名
6
关系图如下:
表的详细列名:
基本表的设计
完成数据库的逻辑和物理设计后,需要运用SQL语言对数据库中所涉及的表进行定义,同时要考虑与表有关的完整性约束条件。
1.建立病人表:
CREATETABLE病人
(
病案号VARCHAR(15)PRIMARYKEY,
姓名VARCHAR(20)NOTNULL,
7
性别CHAR
(2)CHECK(性别IN('
男'
'
女'
)),年龄VARCHAR(100)NOTNULL,电话VARCHAR(12),
病房编号CHAR(50)NOTNULL,病床号INT,
主治医生姓名CHAR(50),
FOREIGNKEY(病房编号)REFERENCES病房(病房编号));
Foreignkey(主治医生姓名)references医生(医生姓名),
2.建立医生表:
createtable医生
医生编号VARCHAR(50)notnull,医生姓名CHAR(10),性别CHAR(5),
年龄CHAR(20),
职称VARCHAR(50),
电话VARCHAR(50),
科室编号VARCHAR(50),primarykey(医生编号),
Foreignkey(科室编号)references科室(科室编号),);
3.建立病房表:
createtable病房
病房编号CHAR(50)notnull,收费标准INT,
所属科室VARCHAR(50),病房情况CHAR(50),primarykey(病房编号),
);
8
4.简历科室表
createtable科室
编号VARCHAR(50)notnull,
科室名CHAR(10),
主治医生姓名CHAR(5),
电话CHAR(20),
primarykey(科室编号),
1.插入病人信息
insertinto病人values('
001'
阿一'
18'
333333'
101'
1'
陈一'
insertinto病人values('
002'
阿二'
433333'
102'
陈二'
003'
阿三'
533333'
103'
陈三'
004'
阿四'
633333'
104'
陈四'
插入病房基本信息
insertinto病房values('
300'
外科'
3床位'
400'
内科'
500'
儿科'
600'
妇科'
9
插入医生基本信息
insertinto医生values('
30'
中级'
1111'
insertinto医生values('
50'
高级'
2111'
2'
3111'
3'
values('
40'
4111'
4'
insertinto医生
插入科室基本信息
insertinto科室values('
10
3、完整性约束:
根据需要给数据表添加数据完整性,并说明添加的理由。
建立完整性约束:
保证医生的真实性,和医生编号的正确性
保证病人的真实性,和病人编号的正确性
保证科室的真实性,和科室编号的正确性
保证病房的真实性,和病房编号的正确性
createruled_rule
as@Wnolike'
[w][0-9]'
;
execSp_bindruled_rule,'
病房.Wno'
11
验证存入的信息:
插入:
12
查看是否存入:
查找功能:
4、存储过程、触发器和视图:
根据需要给数据库添加几个实用的存储过程、触发器和视图,并说明它们各自的功能。
一:
建立触发器:
用企业管理器为表病人创建一个级联更新触发器trrigger_c。
要求:
若修改病人表中一病人的编号,则表病房中与该病人相关的编号自动修改。
1、启动企业管理器,选择数据库---医院管理,将其展开,单击“表”对象。
2、打开“触发器属性”对话框。
在右窗格中,用鼠标右键单击表对象病人,在打开的快捷菜单中选择“所有任务”?
“管理触发器”选项,打开“触发器属性”对话框。
3、创建SQL语句。
在“文本”输入框内输入下面语句:
createtriggertrigger_con病人
forupdateas
ifupdate(病房编号)begin
declare@病房编号_newnvarchar(50),@病房编号_oldnvarchar(50)select@病房编号_new=病房编号frominserted
select@病房编号_old=病房编号fromdeleted
13
update病房set病房编号=@病房编号_newwhere病房编号=@病房编号_oldend
二.建立存储过程:
存储过程是保存起来的可以接受和返回用户提供的参数的Transact-SQL语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用,或在所有会话中临时使用。
也可以创建在MicrosoftSQLServer启动时自动运行的存储过程。
它可以实现模块化编程。
具有对数据库立即访问的功能。
可以加快程序的运行速度。
可以减少网络流量。
可以提高数据库的安全性。
自动执行存储过程。
CreateProc医生治疗的情况
asselect医生.医生编号,病人.病案号
from医生innerjoin病人on医生.医生编号=病人.病案号
execsp_depends医生治疗的情况
14
CreateProc病人情况
asselect*from病人
Return
execsp_depends病人情况
三.创建视图:
视图是虚表,它就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
创建视图显示医生与病人对应情况
createview病人与医生
asselect病案号,姓名,医生姓名
四.数据库的备份
备份数据库选择医院病房管理数据,右键选择“所有任务”,然后选择“备份数据库”,弹出对话框,点击“添加”,弹出对话框,选择要保存备份文件的路径和指定文件名,点击“确定”完成备份工作。
15
5、实验小结。
在这些天中,我们学到了很多东西,包括建表,导入数据,查询,插入。
最重要的是我们有机会用电脑自己进行实践,没接触的时候总是觉得它比较深奥或是不可接近的新型语言,尽管自己心理上有些陌生感。
学习数据库就和我们平时的其它科目学习一样感觉它有永无止境的知识SQLServer数据库的实验学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。
因此,我感谢老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。
希望在今后中,SQLServer能给我更多帮助。
16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医院 住院 病人 管理 数据库 设计