医院住院病人数据库设计.docx

上传人:b****5 文档编号:6437728 上传时间:2023-01-06 格式:DOCX 页数:18 大小:1.94MB
下载 相关 举报
医院住院病人数据库设计.docx_第1页
第1页 / 共18页
医院住院病人数据库设计.docx_第2页
第2页 / 共18页
医院住院病人数据库设计.docx_第3页
第3页 / 共18页
医院住院病人数据库设计.docx_第4页
第4页 / 共18页
医院住院病人数据库设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

医院住院病人数据库设计.docx

《医院住院病人数据库设计.docx》由会员分享,可在线阅读,更多相关《医院住院病人数据库设计.docx(18页珍藏版)》请在冰豆网上搜索。

医院住院病人数据库设计.docx

医院住院病人数据库设计医院住院病人数据库设计大学软件学院实验报告大学软件学院实验报告课程:

数据库原理与实用技术实验学期:

2012-2013学年第二学期任课教师:

薛专业:

网络工程学号:

姓名:

成绩:

期末大作业:

医院住院病人管理数据库设计一、实验目的

(1)掌握数据库设计的基本方法

(2)掌握各种数据库对象的设计方法二、实验内容1.数据库概要设计:

用文字简要描述实体之间的联系,画出E-R图(标出各联系中实体的基数)。

E-R图提供了表示实体型、属性和联系的方法。

1)实体型:

用矩形表示,矩形框内写明实体名;2)属性:

用椭圆形表示,并用无向边将其与相应的实体连接起来;3)联系:

用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型。

注意:

如果一个联系也具有属性,则这些属性也要用无向边与该联系连接起来。

下而将根据要设计的住院数据库对其中涉及到的实体、实体属性和实体间的联系进行分析和设计。

(1)实体及其属性分析根据木次课程设计所给出的初始条件,目前有以下实体:

病人实体、病房实体、病床实体、医生实体、科室信息实体和住院登记实体。

对于这些实体,它们的实体及属性图如图4-7所示:

住院数据库实体及其属性如下图:

(2)分E-R图设计在本次设计中,根据任务书所提供的业务规则,实体和实体之间可以有以下几种联系:

1)医生与病人之间的联系,它们之间的联系图如图1所示;2)病人与病房以及病房与病床之间的联系,它们之间的联系图如图2所75;3)医生与科室信息之间的联系,它们之间的联系图如图3所示;1:

病人与医生联系图2:

病人与病房及病房与病床联系图(一般来说,一个医生拥有一个办公科室)(3)基本E-R图设计对于分E-R图,它们之间往往存在一些不一致的地方,即冲突。

合并时不能简单的将上述的各个分E-R图画在一起,必须要消除各个分E-R图中的不一致,以形成一个能为全系统所有用户所共同理解和接受的统一的概念模型。

在上述分E-R图上可以做出修改,最终形成的基本E-R图如下图所示:

医院住院数据库基本E-R图:

办公科室病房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病人(病案号,姓名,性别,电话号码,病房编号)此为病人实体型所对应的关系模式。

其中病案号为次关系模式的码,而病房编号为该关系模式的外码。

2病房(病房编号,收费标准,所属科室,病床号)此为病房实体型所对应的关系模式。

其中病房编号唯一确定一个病房,所以为该关系模式的码。

3医生(医生编号,姓名,性别,职称,电话号码,部门)此为医生实体型所对应的关系模式。

其中医生编号唯一确定一个医生,所以为该关系模式的码。

4科室信息(科室编号,科室名,电话,主治医生姓名)此为科室实体型所对应的关系模式。

其中科室编号唯一确定一个科室,所以为该关系模式的码。

一:

数据字典:

1病人信息的数据项描述:

数据项名数据项含义类型长度允许空备注病案号病人的编号VARCHAR15NOTNULL(主键)对应唯个病人姓名病人姓名VARCHAR20NULL性别病人性别CHAR2NULL只能取男或女年龄病人年龄char50NULL电话病人电话VARCHAR12NULL病房编号CHAR4NULL住院时由系统分配病床号int2NULL一个病房一般有1-3个床位主治医师CHAR50NULL2病房信息的数据项描述:

数据项名数据项含义类型长度允许空备注病房编号病房编号CHAR50NOTNULL(主键)病房编号唯一收费标准INT4NULL单位为(元/天)所属科室VARCHAR50NULL病床情char50NULL一个病房一般有1-3个床位况3医生信息的数据项描述:

数据项名数据项含义类型长度允许空备注医生编号医生编号VARCHAR50NOTNLLL(主键)对应唯个医生姓名医生姓名VARCHAR50NULL性别医生性别CHAR2NULL只能取男或,女,年龄医生年龄CHAR50职称医生职称VARCHAR50NULL有可能有多个职称电话医生电话VARCHAR50NULL科室编所属部门VARCHAR50NULL4科室信息的数据项描述:

数据项名数据项含义类型长度允许空备注编号科室编号CHAR50NOTNLLL(主键)科室编号唯一科室名VARCHAR50NULL电话VARCHAR50NULL主治医生姓名VARCHAR50NULL关系图如下:

嗇表2病房信息中的数据,位置是医院管理中、Wocal)上病房编号1收费标准所属科室1病床情况11的表3医生信息托激据,位舌是医院管理中、(local)上医生编号1匹称电话1科玄缩号1協表4科室信息中的数据,位置是医院管理中、(local)上科室编号T1主治医生姓名I1基本表的设计完成数据库的逻辑和物理设计后,需要运用SQL语言对数据库中所涉及的表进行定义,同时要考虑与表有关的完整性约束条件。

1.建立病人表:

CREATETABLE病人(病案号VARCHAR(15)PRB-IARYKEY,姓名VARCHAR(20)NOTNULL,性别CHAR

(2)CHECK(性别IN(男,女),年龄VARCHAR(IOO)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(病房编号),);4.简历科室表createtable科室(编号VARCHAR(50)notnull,科室名CHAR(10),主治医生姓名CHAR(5),电话CHAR(20),primarykey(科室编号),);1插入病人信息insertinto病人valuesC001,T8J333333,TO】,TJ陈一);T8J433333,T02,T陈二);T8533333,T03,,TJ陈三);T8J633333,T04,,T,陈四(所舅响的行勤为1行)(所劉响的行数为1行)(所敷响的行数为1行(觴响的行数为1行插入病房基木信息insertinto病房values(10r,300,外科,、3床位);insertinto病房valuesC102:

400内科J3床位);insertinto病房values(103,J500,J儿科,3床位);insertinto病房valuesC104,600,、妇科,3床位);房房房房病病病病oooOntntntnt1iiivaluesr101300,values(?

102,40CT,valuesC103500,values104J,?

600J,位位位位mR一&W3333,S科科科斜外内儿妇插入医生基木信息insertinto医生values(001insertinto医生values(002,,,2111,,,2,);insertinto医生values(003,,,3111,,,3,);insertinto医生values(004(所影响的行数对1行)(所影响的行數为1行)(所影响的行数对1行)(所影响的行敎为1行),4111,4);陈一,男,30,中级陈二,女,50,高级陈三,男,30,中级陈四,女,40,高级1234DDoO11111*234级级级级305030401234DODDoooo5sS0-ceeeuullunaialalVVVV主生生生医医fesinscutintoinsertintoinsertintoinsertinto(折影咆旳行魏为1行)(斯影响的行数为1行所影响的行数为1行(历影响的行數为1行)插入科室基本信息(所影响的行数为1行)(斯影响的行敎为i行)(所彩响的行数为1行)嵋影响的行数为1行)3、完整性约束:

根据需要给数据表添加数据完整性,并说明添加的理由。

建立完整性约束:

保证医生的真实性,和医生编号的正确性createrulearuleas医生编丐like0-90-90-9execSpbindrulearule,医生.匪生编号“:

4III命令已成功完成。

|已将规则绑定到表的列上。

建立完整性约束:

保证病人的真实性,和病人编号的正确性createrulebrule“病案号lik0-90-S0-9JMexecSpbindrulebrule,病人病案号f:

4III命令已成功芫成。

已将规则绑定到聂的列上。

建立完整性约束:

保证科室的真实性,和科室编号的正确性createruleclruleexecSpbindruleclrule科室科室编号as科室编号like0-90-90-9J4HI命令已成功完成。

已将规则绑走到克的列上。

建立完整性约束:

保证病房的真实性,和病房编号的正确性createruled_ruleasWnolikewj0-9,;execSp_bindruled_rule,病房病房Wno;execSp_bindrulec2_rule,病房病腭编号createrulec2_ruleas病房编号like?

0-90-90-9?

命令已成功宾成&验证存入的信息:

Solect*fron.JSASelect力from病馬Selectfrom科室insertinto炳入values(006,小断,央,5,5333333104,23轴老、;(所耕财的行数为1行)查看是否存入:

Select*froni病人|I病裳号业名性易年龄电话病房编E病床Ei主治匡生姓名査找功能:

s?

electxfroni5Awhere:

仃3,4、存储过程、触发器和视图:

根据需要给数据库添加几个实用的存储过程、触发器和视图,并说明它们各自的功能。

一:

建立触发器:

用企业管理器为表病人创建一个级联更新触发器trrigger_Co要求:

若修改病人表中一病人的编号,则表病房中与该病人相关的编号自动修改。

1、启动企业管理器,选择数据库-医院管理,将其展开,单击“表”对象。

2、打开“触发器属性”对话框。

在右窗格中,用鼠标右键单击表对象病人,在打开的快捷菜单中选择“所有任务”一“管理触发器”选项,打开“触发器属性”对话框。

3、创建SQL语句。

在“文本”输入框内输入下面语句:

createtriggertriggercon病人forupdateasifupdate(病房编号)begindeclare病房编号_newnvarchar(50),病房编号_oldnvarchar(50)select病房编号_new二病房编号frominsertedselect病房编号_old二病房编号fromdeletedupdate病房set病房编号二病房编号_newwhere病房编号=病房编号_oldendforupdateas1jpdatei病房编号ibegindpcbe病房n7archai;50i,病房编号_oldnvarcharSCseleci病房编号一nev厂病房编号frominsertedselecl病房编号_old-病房编号Tomdeletedupdate病京编号二病忘编号_newwhere病房编号=病序縮号_oldend三彳1.III1检查语法(C)1另存为模板(S)111/7确定关闭应用帮朋文本(T).名称(N):

v新建二j二.建立存储过程:

存储过程是保存起来的可以接受和返回用户提供的参数的Transact-SQL语句的集合。

可以创建一个过程供永久使用,或在一个会话中临时使用,或在所有会话中临时使用。

也可以创建在MicrosoftSQLServer启动时自动运行的存储过程。

它可以实现模块化编程。

具有对数据库立即访问的功能。

可以加快程序的运行速度。

可以减少网络流量。

可以提高数据库的17/2017安全性。

自动执行存储过程。

CreateProc医生治疗的情况asselect医生.医生编号,病人.病案号from医生innerjoin病人on医生.医生编号二病人.病案号execsp_depends医生治疗的情况医生治疗的情况J?

卓询rc-zuizuoiuvi-.masier.rc-zuizuoiuvrvCreateProc医生治寿的,惰貝asselect医生.疸生编号,病人爲案号iron医生imxcrjuix.病人on底生.医生编号-病人病案号|命令已成力芫矿exec医生治疗的悄况,Lnametypeupdatedselectedcolumn1dbo5p_dependsstoredprocedurenonobjnamc2dbo.病人.usertablenono病案号3dbo.医生usertablenono医生涌号CreateProc病人情况asselect*from病人Returnexecsp_depends病人情况execspdepends病人情况3.创建视图:

视图是虚表,它就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。

创建视图显示医生与病人对应情况createview病人与医生asselect病案号,姓名,医生姓名from医生innerjoin病人on医生.医生编号二病人.病案号命令已成功完成。

4.数据库的备份备份数据库选择医院病房管理数据,右键选择“所有任务”,然后选择“备份数据库”,弹出对话框,点击“添加”,弹出对话框,选择要保存备份文件的路径和指定文件名,点击“确定”完成备份工作。

5、实验小结。

在这些天中,我们学到了很多东西,包括建表,导入数据,查询,插入。

最重要的是我们有机会用电脑自己进行实践,没接触的时候总是觉得它比较深奥或是不可接近的新型语言,尽管自己心理上有些陌生感。

学习数据库就和我们平时的其它科目学习一样感觉它有永无止境的知识SQLServer数据库的实验学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。

因此,我感谢老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。

希望在今后中,SQLServer能给我更多帮助。

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1