医院住院病人管理数据库设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
__大学软件学院实验报告
课程:数据库原理与实用技术实验学期: 2012-2013学年第二学期任课教师:薛
专业:网络工程学号:姓名:成绩:
期末大作业:医院住院病人管理数据库设计
一、实验目的
(1)掌握数据库设计的基本方法
(2)掌握各种数据库对象的设计方法
二、实验内容
1.数据库概要设计:用文字简要描述实体之间的联系,画出E-R图(标出各联系中实体的基数)。
E-R图提供了表示实体型、属性和联系的方法。
1)实体型:用矩形表示,矩形框内写明实体名;
2)属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;
3)联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型。
注意:如果一个联系也具有属性,则这些属性也要用无向边与该联系连接起来。
下面将根据要设计的住院数据库对其中涉及到的实体、实体属性和实体间的联系进行分析和设计。
(1)实体及其属性分析
根据本次课程设计所给出的初始条件,目前有以下实体:病人实体、病房实体、病床实体、医生实体、科室信息实体和住院登记实体。对于这些实体,它们的实体及属性图如图4-7所示:
住院数据库实体及其属性如下图:
(2) 分E-R 图设计
在本次设计中,根据任务书所提供的业务规则,实体和实体之间可以有以下几种联系: 1) 医生与病人之间的联系,它们之间的联系图如图1所示;
2) 病人与病房以及病房与病床之间的联系,它们之间的联系图如图2所示; 3) 医生与科室信息之间的联系,它们之间的联系图如图3所示;
1:病人与医生联系图
2:病人与病房及病房与病床联系图
3: 医生与科室信息之间的联系
(一般来说,一个医生拥有一个办公科室)
(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病人信息的数据项描述:
2病房信息的数据项描述:
3医生信息的数据项描述:
4科室信息的数据项描述:
关系图如下:
表的详细列名:
基本表的设计
完成数据库的逻辑和物理设计后,需要运用SQL语言对数据库中所涉及的表进行定义,同时要考虑与表有关的完整性约束条件。
1. 建立病人表:
CREATE TABLE 病人
(
病案号 VARCHAR(15) PRIMARY KEY,
姓名 VARCHAR(20) NOT NULL,
性别 CHAR(2) CHECK(性别 IN('男','女')),
年龄 VARCHAR(100) NOT NULL,
电话 VARCHAR(12),
病房编号 CHAR(50) NOT NULL,
病床号 INT,
主治医生姓名 CHAR(50),
FOREIGN KEY (病房编号) REFERENCES 病房(病房编号)); Foreign key (主治医生姓名)references 医生(医生姓名),
2.建立医生表:
create table 医生
(
医生编号 VARCHAR(50) not null,
医生姓名 CHAR(10) ,
性别 CHAR(5) ,
年龄 CHAR(20),
职称 VARCHAR(50),
电话 VARCHAR(50),
科室编号 VARCHAR(50),
primary key(医生编号),
Foreign key (科室编号)references 科室(科室编号), );
3.建立病房表:
create table 病房
(
病房编号 CHAR(50) not null,
收费标准 INT ,
所属科室 VARCHAR(50) ,
病房情况 CHAR(50),
primary key(病房编号),
);