数据库大作业概要

上传人:今*** 文档编号:108148007 上传时间:2019-10-22 格式:DOCX 页数:12 大小:142.27KB
返回 下载 相关 举报
数据库大作业概要_第1页
第1页 / 共12页
数据库大作业概要_第2页
第2页 / 共12页
数据库大作业概要_第3页
第3页 / 共12页
数据库大作业概要_第4页
第4页 / 共12页
数据库大作业概要_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数据库大作业概要》由会员分享,可在线阅读,更多相关《数据库大作业概要(12页珍藏版)》请在金锄头文库上搜索。

1、成都工业学院数据库系统原理题 目: 医院管理系统 学生姓名: 罗俊杰 唐浩 陈嘉鑫 李洪亮 班 级: 1505011 院系年级: 2015级通信工程学院 2016年11月20日目录一、 需求分析3二、概念结构设计32.1 概念设计的方法及步骤32.2设计局部分E-R图32.3确定实体与属性的原则32.4基本符号4二、 逻辑结构设计4 3.1数据表的设计4 3.2数据完整性设计4 3.3数据库对象设计5四、数据库设计实现及运行5 4.1数据库的创建5 4.2数据表的创建54.3数据库视图的设计64.4 数据库关系图8 4.5 数据库索引的创建84.6 实例8六、 用SQL语句解决以下几个问题91

2、、 需求分析 医院管理系统是医院中常见的计算机管理系统。它的主要任务是对日常的医护关系信息进行管理,如病人入院的安排入住、和医生护士工资的管理表。迅速准确的查找病人所在的病房和负责该病人的医生和护士。这样充分发挥了数据库管理系统高效、可靠、便捷的性能,减少编程人员的工作量。二、概念结构设计 1976年P.P.S.Chen提出逻辑结构设计之前先设计一个概念模型,并提出了数据库设计的实体联系方法Entity-Realationship Approach。 2.1 概念设计的方法及步骤设计概念结构的四类方法1) 自顶向下 首先定义全局概念结构的框架,然后逐步细化。2) 自底向上 首先定义各局部应用的

3、概念结构,然后将它们集成起来,得到概念结构。3) 逐步扩张 首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。4) 混合策略 将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成自底向上策略中设计的各局部概念结构。 2.2设计局部分E-R图1) 需求分析阶段,已用多层数据流图和数据字典描述了整个系统。2) 设计E-R图首先需要根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,让这组图中每一部分对应一个局部应用然后以这一层次的数据流图为出发点,设计E-R图。3)标定局部应用中的实体、属性、码,实体间的

4、联系。 将各局部应用涉及的数据分别从数据字典中抽取出来,参照数据流图,标定各局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型(1:1,1:n,m:n)。 2.3确定实体与属性的原则1) 属性不能再具有需要描述的性质。即属性必须是不可分的数据项,不能再由另一些属性组成。2) 属性不能与其他实体具有联系。联系只发生在实体之间。3) 凡能作为属性对待的,应尽量作为属性。1医护人员1处方管理部门病房nn病人 2.4基本符号实体的表示:用长方形联系的表示:用菱形1:1、1:n、n : m属性的表示:用椭圆形2、 逻辑结构设计 3.1数据表的设计(1) 病人病人表包含以下字段:住院号

5、、姓名、性别、年龄、病房号、入院日期。(2) 医护人员医护人员表包含以下字段:职工编号、姓名、性别、年龄、病房号、部门编号。(3) 病人管理病人管理表包含以下字段:序号、住院号、职工编号、病房号。(4) 病房病房表包含以下字段:病房号、所在楼层。(5) 处方处方表包含以下字段:处方号、住院号、职工编号、药品。(6)病房病房表包含以下字段:病房号、所在楼层。 3.2数据完整性设计 为了保证数据库的正确性、完备性、和一致性,就必须进行数据完整性设计。就本设计而言应考虑实施如下数据完整性:(1) 给每个表实施主键及外键约束。(2) 设定缺省约束,如医生性别。(3) 设置非空约束,如医生姓名。 3.3

6、数据库对象设计 为了充分发挥数据库的效能,保证数据库的安全性,提高数据库管理系统的执行效率,可以考虑使用视图存储过程及表的触触发器来实现某些功能。在这个数据库中,六个关系模式是:病人(住院号,姓名,性别,年龄,病房号,入院日期)医护人员(职工编号,姓名,性别,年龄,病房号,部门编号)病人管理(序号,职工编号,病房号)病房(病房号,所在楼层)处方(处方号,住院号,职工编号,药品)部门(部门编号,部门名称)这六个关系模式组成了医院管理系统的数据库模式,这七个关系组成了工资管理系统关系数据库。该关系模型中有下划线的为主键。四、数据库设计实现及运行 4.1数据库的创建 直接在SQL Sever Man

7、agement Studio中新建一个数据库,名为Patient&Doctor&Nurse。 4.2数据表的创建CREATE TABLE 病人( 住院号 char(10) PRIMARY KEY,姓名 char(10) NOT NULL,性别 char(2), 年龄 char(10),病房号 char(10),入院日期 smalldatetime)CREATE TABLE 医护人员( 姓名 char(10) NOT NULL,性别 char(2),年龄 char(10),职工编号 char(10) PRIMARY KEY,病房号 char(10),部门 char(10)CREATE TABLE

8、 管理( 住院号 char(10) PRIMARY KEY,职工编号 char(10),病房号 char(10)CREATE TABLE 处方( 处方号 char(10) PRIMARY KEY,职工编号 char(10),病房号 char(10)CREATE TABLE 部门( 部门编号 char(10) PRIMARY KEY,部门名称 char(10)CREATE TABLE 病房号( 病房号 char(10) PRIMARY KEY,所在楼层 char(10) NOT NULL) 4.3数据库视图的设计视图是一种数据库对象,它为用户提供了一种对原数据可定制查询、且可修改的工具。通常视图

9、又称虚拟表(Virtual Table),能像表一样操作,即可对视图进行查询、插入、更新与删除。1)在某些情况下,让所有的用户看到整个逻辑模型(即所有实际存储在数据库中的关系)是不可取的。考虑一个护士需要知道医生的标识、姓名和其他基本信息,但是没有权限看到该医生的工资值,此人应该看到的关系如下SQL语句所描述:Select 姓名,性别,年龄From 医生2)视图提供一个对某些用户从视图中隐藏某些数据的机制。任何不是逻辑模型的一部分,但作为虚关系对用户可见的关系称为视图。用CREATE VIEW V AS 可以是任何合法的SQL表达式V表示视图名CREATE VIEW 病人信息 (姓名,性别,年

10、龄,病房号,所在楼层)AS SELECT 病人.姓名,病人.性别,病人.年龄,病人.病房号,病房号.所在楼层FROM 病人,病房号where 病人.病房号=病房号.病房号 3) 一旦定义了一个视图,我们就可以用视图名指代该视图生成的虚关系。4) 定义视图时并不是由查询查询表达式的执行结果创建一个新关系。相反,一个视图的定义导致存储一个查询表达式,当该视图被使用时,他就被这个已存储的查询表达式替换。5) 创建视图应注意以下原则:只能在当前数据库中创建视图;视图名称必须遵循SQL中所规定的对象命名规则;可将其他视图作为数据源来创建新视图;不能将规则或DEFAULT定义与视图相关联;在定义视图的Se

11、lect语句中不可以包含order by、compute或compute by子句或into关键字;不能创建临时视图,也不能在临时表上创建视图;在某些情况下视图创建者必须为视图中的列重新命名。6) 视图的优点提高了数据库对应用程序的独立性,有利于保持数据的一致性。其次是简化了复杂查询,提供了保持数据库安全性的手段。CREATE VIEW 病人信息 (姓名,性别,年龄,病房号,所在楼层)AS SELECT 病人.姓名,病人.性别,病人.年龄,病人.病房号,病房号.所在楼层FROM 病人,病房号where 病人.病房号=病房号.病房号4.4 数据库关系图 4.5 数据库索引的创建 索引被创建于已有

12、的表中,他可使对行的定位更为快速更为有效。可以在表格的一个或者多个列上创建索引,每个索引都会被起个名字。用户无法看到索引,它们只能被用来加速查询。1) 唯一的索引(UNIQUE INDEX)在表格上面创建某一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。CREATE UNIQUE INDEX 索引名称 on 表名称(列名称)“列名称”规定你需要索引的列。2) 简单的索引在表上创建一个简单的索引。当我们省略关键词UNIQUE时,就可以使用重复的值。CREATE INDEX 索引名称 ON表列名(列名称)“列名称”规定你需要索引的列。 4.6 实例1) 创建一个简单的索引名为“病人IN

13、DEX”,在病人表的入院日期字段:CREATE INDEX 病人INDEX ON 病人(入院日期)2) 降序索引某个列中的值你可以在列名称后添加保留字DESC:CREATE INDEX 病人INDEX ON 病人(入院日期 DESC)3) 假如你希望索引不止一个索引列你可以在括号中列出这些列的名称,用逗号隔开:CREATE INDEX 病人INDEX ON 病人(入院日期,姓名)CREATE INDEX 病人所在病房号 on 病人(病房号)6、 用SQL语句解决以下几个问题1. 医生平均年龄?select avg (cast(年龄 as int)from 医生2. 求内科和外科医生人数?select count(*) as 内科医生人数 from 医生 where 部门=内科select count(*) as 外科医生人数 from 医生 where 部门=外科3. 查询工资最高的医生或者护士的姓名,工作编号?select 姓名,工作编号from 医生where 工作编号=(select top 1 工作编号from 工资order by 工资 desc)4. 求护士中比医生都小的护士的姓名和编号?select 姓名,工作编号,年龄from 护士where 年龄 all (select min(年龄)from 医生)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号