第四章数据库与数据管理技术随着计算机和网络等信息技术在医药学领域深度应用,极大地推动了数据库技术在医药学领域的广泛应用。尤其国家对公共卫生信息化和医疗改革的大力度建设投入,医院及其他医疗机构已经建立起数目众多的医院电子病历数据库、药品数据库、疾病数据库、新药数据库、生物数据库、医药文献数据库等具有医药特色数据库。这些数据库支撑着数字化和网络化环境下的医学信息系统运作,是大型的网络数据库。本章将以SQLServer2008数据库管理系统为背景,介绍有关数据库的应用知识。4.1数据库基础知识人类的日常生活和社会生产每时每刻都产生大量的数据,数据已经成为一种需要被管理和加工的非常重要的资源。如何科学地收集、整理、存储、加工和传输数据是人们长期以来十分关注的问题。医药领域存在着大量的数据和数据处理的需求,因而数据库技术也成为了医药学领域专业学生必须了解和掌握的知识。4.1.1海量数据与数据库系统在信息时代人们的生活和工作与信息密切相关。数据作为信息社会的产物,大量地充塞人们的生活空间,网络银行、网上购物、电子政务、电子图书馆、医院看病等等,比比皆是数字的海洋,例如:一个医院一天的影像信息数据量为80GB,一年约为30TB。全球数字数据量每两年就翻一番,据2011年的统计,数据量达到了里程碑式的1.8万亿个G字节。面对如此海量的数据,如何高效存储和管理数据是人们面临的挑战。数据库技术产生于20世纪60年代末70年代初,是一种计算机辅助管理数据的方法,它研究如何科学地组织和存储数据,如何高效地获取和处理数据。伴随计算机网络技术的发展、人们对数据的认识和使用需求,数据库技术从单机处理发展到联网处理,从集中式发展到分布式或到客户机/服务器处理,直到并行处理。数据库(DataBase,简称DB):可以理解为存放数据的仓库。它是长期储存在计算机外部存储设备上的一组相关数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(DataBaseManagementSystem,简称DBMS),它是对数据库进行统一管理和统一控制的一个系统软件,这个软件位于用户和操作系统之间,用户对数据库的操作都是通过数据库管理系统来实现的。它的主要功能是实现如何科学地组织和存储数据,如何高效地获取和维护数据。由这些软件围绕某一个具体主题所创建的,就是数据库,例如,我们在SQLServer管理系统上建立了一个学生成绩管理数据库。数据库系统(DataBaseSystem,简称DBS),是指具有管理和控制数据库功能的计算机应用系统,它是一个人-机系统,由计算机支持系统、数据库管理系统、数据库以及数据库管理员和用户组成,数据库系统结构如图4.1所示。其中计算机支持系统包括用于数据库管理的硬件设备和软件支持系统。对于计算机硬件设备,要求数据库服务器有足够大的外存容量,高速的输入输出设备等。软件支持系统包括操作系统,各种应用系统开发工具等。数据库管理员是负责对数据库系统进行全面的管理和控制,保证数据的安全性和完整性,当数据库出现故障时,能够及时恢复系统工作,对数据库的性能进行监控和改进等。用户则是指最终使用数据库的人员。用户往往并不是数据库的专业技术人员,因此,他们对数据库的使用需要通过一种更简单易用的应用系统来进行,数据库开发人员会利用某种应用开发工具建立一个可视化界面,使得数据库用户能够很方便地通过这个应用系统来实现对数据库的操作。目前市场上的数据库管理系统按使用的需求和应用环境可分为小型的数据库系统(MySql,FoxPro,Access等)、中大型数据库系统(Oracle,SQLServer,DB2,Sybase等)。随着网络和数据库应用的高速发展,数据库从c/s架构转向b/s体系,网络数据库也从局域网应用向web应用扩张;未来广泛使用的数据库产品都是典型的Web网络数据库产品。网络数据库(NetworkDatabase)其含义有三个:①在网络上运行的数据库。②网络上包含其他用户地址的数据库。③在信息管理中,数据记录可以以多种方式相互关联的一种数据库。4.1.2数据库系统的结构从数据库管理系统的角度来看,数据库系统通常采用三级模式结构。从外到内依次为外模式、模式和内模式。1.模式模式(Schema),又称逻辑模式,是数据库中全体数据的逻辑结构和特征的抽象描述。它由数据库设计者综合所有用户的需求,按照某一数据模型构造的全局逻辑结构。一个数据库只有一个模式,而数据库是模式的一个实例。例如:以构建门诊管理数据库为例。在医院门诊的医疗业务中,诊疗活动涉及了医生、科室、病人、病人就诊、处方等实体。其中病人是数据库的一个实体,要描述病人实体,必须找出能够描述任一位病人的共同特征以及能区分每一个病人的个体特征,将这些特征组合在一起就构成病人实体的模式。将上述所有实体的模式按一定联系组合就形成门诊管理数据库的模式。根据实际情况,可以选择以下特征组合来描述门诊病人实体。病人(病人编号,姓名,性别,身份证号,建档日期)同理,病人就诊活动也是一个实体,可以用如下的特征组合来描述病人就诊实体。病人就诊(病人编号,就诊次数,就诊医生,就诊科室,就诊日期,主要诊断)数据库用户用户用户应用系统应用开发工具数据库管理系统操作系统数据库管理员图4.1数据库系统图示当给一个模式赋予所有的具体数据后,就得到一个实例。例如,将下面二个具体数据分别输入到病人实体模式和病人就诊实体模式中,就可得到病人和病人就诊的两个具体的实例。病人(10020001,张林,男,441741198010100104,2007-1-1)病人就诊(10020001,1,陈明,内科,2012-6-5,急性肠炎)在一个数据库中,只能有一个模式。数据库的模式一旦确定,则是相对稳定的。但同一个模式可以有很多实例,实例是可以变动的。模式在数据库系统模式结构中处于中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序及所使用的开发工具无关。2.外模式外模式(ExternalSchema),又称用户模式,它是某个或某几个用户所能够看见和使用的局部数据的逻辑结构和特征的描述。一个数据库可以有多个外模式,当不同的用户有不同应用需求和不同的使用权限时,所看见的数据库中的数据是不同的,因此外模式的描述就会有所不同。例如,在门诊管理系统数据库中,用户A希望了解在最近一年里有多少患某种疾病的病人来就诊。而用户B则希望统计在一个月里,某科室的某位医生门诊病人数量有多少。因此,可以分别得到如下外模式:外模式A(病人编号,就诊日期,主要诊断)外模式B(病人编号,就诊医生,就诊科室,就诊日期)然后,根据用户的具体的需求,例如,用户B需要查询在2012年6月内科张风医生收治门诊病人的情况,数据库管理系统就会根据外模式B,将满足该用户需求的相关数据提取出来呈现给用户。如表4.1所示。表4.1满足外模式B的相关数据病人编号就诊医生就诊科室就诊日期10020001张风内科2012-6-210020012张风内科2012-6-3……………………外模式是保证数据库安全的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,而其余数据对该用户来说是不可见的。3.内模式内模式(InternalSchema),又称存储模式,是数据库中全体数据的物理存储结构和存储方式的抽象描述,是数据在存储设备中的具体实现方式。一个数据库只有一个内模式。内模式描述数据的存储方式、索引的组织方式、数据的加密和压缩等。例如,在门诊管理数据库中,通过对实际情况的分析,发现用户应用需求中涉及到的查询频率最高的是“主要诊断”的情况。因此,为门诊管理数据库的病人就诊实体模式的“主要诊断”特征建立聚簇索引,即将“主要诊断”属性里具有相同值的记录集存放在连续的物理空间中。将门诊管理数据库中的数据按“主要诊断”值建立聚簇存储的物理结构,就成为了该数据库病人就诊实体的内模式。当用户查询某种疾病的情况时(如,中年男性患者高血压的发病情况),由于根据这个内模式存放的“高血压”的病人记录是聚集在一起的,DBMS就可以用最少的磁盘访问次数找到所有“高血压患者”的情况并进行汇总,大大提高在这个特征上的查询速度。一个数据库只有一个内模式,内模式位于数据库存储模式的最里层,和外模式及具体的应用程序无关。为说明简单起见,假设在门诊管理数据库中只存在病人就诊实体模式,则数据库三级模式结构及实例如图4.2所示。4.1.3关系数据库基本概念关系数据库是应用数学方法中的关系代数来处理数据库中的数据,将现实世界中的各种实体以及实体之间的联系均用关系模型来表示。1.关系模型和关系数据库在关系模型中,无论是实体还是实体之间的联系均用关系来表示,一个数据库由若干个关系组成。一个关系就是一张二维表,它由行和列组成。如表4.2所示。表4.2关系1:医生基本情况表表4.3关系2:科室表科室代码科室名称人员数成立时间20030001神经内科181979/1/120030002呼吸内科201978/9/120030003外科151978/10/1每个关系都有一个名字,表4.2中关系的名字为医生基本情况表,表4.3中关系的名字为科室表。属性:表中的每一列都是关系的一个属性,属性的值取自于相应的域。每个属性都有一个名字,称之为属性名,如在表4.2中,属性名分别是医生编号、姓名、性别、出生日期、最高学历、职称、科室代码。域:属性的取值范围,如性别的域是男、女;医生编号的域是8位整数。元组:属性名下面的每一行(即表中的行)称为元组,又称为记录,每一个元组描述一个具体的客观对象或联系,在表4.2中有3个元组。候选码:又称候选关键字,在关系的所有属性中,可以唯一确定一个元组的某一个属性或某几个属性的组合称为候选码。如在表4.2中,医生编号属性作为候选码唯一地确定一个元组。主码:又称主关键字,当候选码多于一个时,可选取其中一个码作为主码。如表4.2中的医生编号属性,因为每个医生都有一个唯一编号,从而可以唯一确定一个医生。因医生编号姓名性别出生日期最高学历职称科室代码51000800005蔡刚男1977/8/6博士生主治医师2003000151000800006唐勇男1976/2/19硕士生进修医师2003000251000800007王丽女1967/7/8硕士生主治医师20030003图4.2三级模式结构及实例图示此,医生编号属性就是本关系的主码。主属性:候选码的诸属性。如“医生工号”是主属性。非主属性:不包含在任何候选码中的属性。如“姓名”、“性别”等是非主属性。外码:表中的某个属性组,虽然不是主码,但与另一个表中的主码相对应,称该属性组为这个表的外码。如医生基本情况表中的科室代码属性虽然不是主码,但它与科室表中的主码——科室代码属性相对应,因此,医生基本情况表中的科室代码属性就是医生基本情况表的外码。含有外码的表称为参照关系,如医生基本情况表;与其相对应的表称为被参照关系,如科室表。建立关系之间的参照与被参照关联,目的在于可以通过一个数据找到与之相关联的另一个数据,例如,可以通过医生基本情况表的“科室代码”(如:20030001)找到与之相关联的科室表中对应该科室的情况(如:神经内科,18,1979-01-01)。需要注意的是,外码并不一定要与相对应的主码同名,但类型和长度要相同。关系模式是对关系的描述,一般表示为:关系名(属性1,属性2,……,属性n)按照上述定义,表4.2的关系可以用如下的关系模式来描述:医生(医生编号,姓名,性别,出生日期,最高学历,职称,科室代码)关系数据库就是数据库的模式均采用关系模式而得到的实例,即关系数据库是由各个关系模式所对应的关系的集合,而关系数据库中的数据是被存放在预先设计好的一张张的二维表中的。可见,要建立一个好的关系数据库的关键是要合理地设计数据库中的每一个关系模式。2.关系数据库的数据操作关系模型的操作主要有查询和更新(包括插入、删除、修改)两大类,其中,查询是最重要、也是基本的操作,它是更新操作的基础。关系数据操作最