第二节 数据库技术的基本理论
一、数据库系统的构成
(一)数据库系统的组成
数据库系统是由计算机系统、数据库、数据库管理系统(DataBaseManagement System)和相关人员组成的具有高度组织的总体。
1、计算机系统
计算机系统是指用于数据库管理的计算机软、硬件系统。硬件方面,数据库系统需要大容量的内存以存放和运行操作系统、DBMS、应用程序以及数据库数据缓冲区等,由于数据量大,故需要大容量的磁盘等直接存取设备存取数据。此外,系统应具有较高的网络功能。软件方面,为了开发应用系统,除了需要操作系统和 DBMS 之外,还需要各种高级语言及其编译系统。
2、数据库
数据库既有存放实际数据的物理数据库,也有存放数据逻辑结构的描述数据库。物理数据库是指按照一定的数据模型组织并存放在外存上的一组相关数据的集合,例如在教务管理信息系统中,数据库存放着学生、课程、选课、成绩、教师、教材等信息。描述数据库存放有关数据库定义信息,如用户名表及权限、数据库表的定义等。这些信息通常存放在数据字典(Data Dictionary)中,有人形象地把数据字典称为数据库的数据库。数据字典是数据库管理系统的组成部分之一,它是由数据库管理系统自动生成并维护的一组表和视图。数据字典是数据库管理系统工作的依据,数据库管理系统通过它对数据库中的数据进行管理与维护。
3、数据库管理系统
DBMS 是对数据进行管理的软件系统,是数据库系统的核心软件。数据库系统的一切操作,包括创建各种数据库对象,如表、视图、存储过程等,以及应用程序对这些对象的操作(如插入数据到表中,对表中原有数据的检索、修改、删除等),都是通过 DBMS 进行的。数据库管理系统主要提供以下功能:
(1)数据库定义功能DBMS 通常都提供数据定义语言(DDL),数据库设计人员通过这些语句来描述和定义数据库的结构,如数据库模式、子模式、存储模式及安全保密等信息。这些定义中包含了数据库对象属性特征的描述、对象属性所满足的完整性约束条件、对象上允许的操作,以及对象允许哪些用户程序存取等。
(2)数据存取功能DBMS 提供数据操纵语言(Data Manipulation Language,简称DML),用户使用DML语言实现对数据库中数据的基本操作,如查询、插入、修改和删除等。
(3)数据库管理功能DBMS提供对数据进行管理和控制的机制,其中包括并发控制功能、存取控制功能以及数据库内部的维护等。
4、相关人员
数据库管理系统中有关人员主要包括数据库管理员、程序员和用户。数据库系统中不同人员涉及不同级别的数据。
(1)数据库管理员(DBA)数据库管理员负责管理和监控数据库系统,解决在应用中系统出现的问题。其主要任务包括:负责数据库系统软件的安装和维护;参与数据库设计;监控数据库的运行;权限管理;日常维护;根据需要对数据库中的数据进行扩充或重组;数据库有关文档的管理。
(2)系统程序员系统程序员是负责应用系统的需求分析和规范说明,以及设计、开发应用系统软件编程的人员。
(3)用户用户是指应用系统的最终使用者,他们通过应用程序的操作界面使用数据库,完成日常业务处理。
(二)数据库系统的结构
1、数据库系统的体系结构
数据库系统的体系结构是数据库系统的一个总体的框架。实际应用中数据库产品多种多样,各支持不同的数据模型和不同的数据库语言,而且数据的存储结构也各不相同,但是绝大多数数据库系统在总体结构上都具有三级模式的结构特点。所以,了解数据库系统的体系结构是学习数据库的基础。三级模式结构1972 年11月ANSI/X3/SPARC 成立了一个DBMS研究组,试图规定一个标准化的数据库系统结构,包括数据库系统的总体结构、接口和各部分所能提供的功能等。ANSI研究组于1975年2月提出了一个临时报告,1978年提交了一个正式报告,称之为 ANSI/SPARC报告,简称为 SPARC 报告。SPARC报告提出了数据库系统的三级模式结构由外模式、概念模式和内模式组成。
(1)概念模式
概念模式又称数据库模式或模式,是数据库中全部数据的逻辑结构和特征的描述。它仅仅对数据库结构进行描述,而不是数据库本身,通常以某种数据模型为基础。概念模式可以被看做是现实世界中的一个组织或部门的实体及其联系的抽象模型在具体数据库系统中的实现。
(2)外模式
外模式又称用户模式或子模式,由概念模式导出,是概念模式的子集,它是用户的数据视图,即与某一应用有关的数据的逻辑表示。由于不同的用户有不同需求,看待数据的方式不同,适用的程序设计语言也可以不同,因此不同用户其外模式的描述是不同的。
(3)内模式内模式又称存储模式,用来定义数据的存储方式和物理结构。例如记录是顺序存储还是索引存储,索引的组织方式是什么,数据是否压缩存储,是否加密等。3种模式的定义通常是由数据库系统提供的数据定义语言DDL(Data DefinitionLanguage)来定义的。
2、二级映像
数据库系统的三级模式是对数据的 3 个抽象级别,数据的具体组织是由 DBMS进行管理的,使用户能逻辑地处理数据,不必关心数据在计算机中的表示和存储。为了实现这 3 个抽象层次的联系和转换,数据库系统在这三级模式中提供了外模式 /概念模式和概念模式 /内模式二级映像。
(1)外模式 /概念模式映像
外模式 /概念模式映像对应于同一概念模式,可以有任意多个外模式。外模式 /概念模式映像定义某个外模式和概念模式之间的对应关系,这些映像定义通常包含在外模式中。当概念模式改变时,只要将外模式 /概念模式映像做相应的改变,就可以保证外模式保持不变,它提供了数据的逻辑独立性。
(2)概念模式 /内模式映像
概念模式/内模式映像定义数据逻辑结构和存储结构之间的对应关系。当数据库的存储结构改变时,只要将概念模式/内模式映像作相应的修改,就可以使得概念模式保持不变,它提供了数据的物理独立性。值得注意的是,三级模式结构的划分在具体的数据库产品中通常是不清晰的,所以不可以生搬硬套。
二、数据模型
数据库是一个企业、组织或部门各方面数据的综合。它既要反映数据本身的内容,又要反映数据之间的联系。由于计算机不可能直接处理现实世界中的具体事物,所以必须事先把具体的事物转换成计算机能够直接处理的数据。在数据库中用数据模型这个工具来抽象表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟。数据模型应满足较真实地模拟现实世界、易于理解和便于计算机实现 3 个方面的要求,为了很好地满足这 3 方面的要求,在数据库系统中针对不同的使用对象和应用目的,采用了不同的数据模型。不同的数据模型实际上是提供了模型化数据和信息的不同工具。根据模型应用的不同目的,可以将这些模型划分为两类,它们分别属于两个不同的层次。第一类模型是概念模型,也称信息模型,它是按用户的观点对数据和信息建模。另一类是数据模型,它是按计算机系统的观点对数据建模,主要包括网状模型、层次模型和关系模型等。
(一)数据模型的构成要素
一般地讲,任何一种数据模型都是经严格定义的概念的集合。这些概念必须能够精确地描述系统的静态特性、动态特性和完整性约束条件。因此数据模型通常都是由数据结构、数据操作和完整性约束这 3 个要素组成的。
1、数据结构
数据结构用于描述系统的静态特征。数据结构是所研究的对象类型(ObjectType)的集合。这些对象是数据库的组成成分,它们包括两类。一类是与数据类型、内容、性质有关的对象,例如网状模型中的数据项、记录,关系模型中的域、属性、关系等;一类是与数据之间的联系有关的对象,例如网状模型中的系型(SetType)。数据结构是描述一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如,层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。
2、数据操作
数据操作用于描述系统的动态特性。数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。数据库主要由检索和更新(包括插入、删除和修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。
3、数据的约束条件
数据的约束条件是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。数据模型应该反映和规定本数据模型必须遵守的、基本的、通用的完整性约束条件。例如,在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。此外,数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的语义约束条件。例如,在学校的数据库中规定大学生的年龄不得超过29岁,硕士生不得超过 38 岁,学生累计成绩不得有3门以上不及格等。
(二)基本数据模型
数据模型是直接面向数据库中数据逻辑结构的,如关系、网状、层次、面向对象等模型,它涉及数据在计算机系统中的表示,被称为“基本数据模型”或“结构数据模型”。人们在研究数据库的过程中,从不同的角度提出了不同的数据模型。流行的基本数据模型有:层次模型、网状模型、关系模型和面向对象模型。在这些数据模型中,面向对象模型是用对象方法实现的,关系模型是用表描述的,而层次模型和网状模型是用图来表示的。
1、层次模型
用树形结构表示实体及其他实体之间联系的模型称为层次模型。它是以树结构作为基本结构,通过树结构及树结构之间的逻辑关系来表示数据间联系的,它反映了现实世界中实体之间的一对多关系。数据的结构如同一棵树一样,由根长出若干分支,每一分支又可长出若干更小的分支……其体系满足下列条件的基本层次关系的集合:有且仅有一个最高级的结点,称为根;其他结点有且仅有一个父结点。在层次结构中,树的结点是实体,树枝表示实体间的关系。树中有惟一的一个结点向上没有联系,该结点就是上面所说的根结点;还有若干结点向下没有任何关系,把这些结点称为叶;其余结点称为中间结点。中间结点向上只与一个结点相关连,而向下可与多个结点相关联。习惯上,把上一层的结点称作“ 父”结点,而把下层的结点称作“子”结点。从子结点到父结点的映像是惟一的,通过父结点可以找到其全部子结点,这也是层次式结构中存取结点的一个基本方法。用层次模型来表示1∶n联系非常直接、方便。但它不能直接表示 m∶n 联系,必须设法转换成几个1∶n的联系才行。层次式数据模型是数据处理中发展较早和技术上比较成熟的一种数据结构,用支持层次模型的数据库管理系统建立的数据库简称层次数据库,其典型代表是IBM 公司的大型数据库管理系统(IMS,Information ManagementSystem)。层次模型的主要缺点是处理个别记录效率较低、尤其是处理最低层的个别记录。另外,数据库文件的维护较麻烦,尤其是当经常大量地执行增、删记录的操作时,需要进行整理、更新数据库文件。
2、网状模型
用网络结构表示实体及其实体之间联系的模型称为网状模型。它反映了现实世界中实体之间存在的较为复杂的关系。网状模型是美国 CODASYL 委员会数据库任务组(DBTG)于 1969 年提出的一种模型,用于设计网状数据库。其体系满足下列条件的基本层次关系的集合:可以有多个结点没有父结点;允许有些结点有多个父结点。在网状模型中,处于某一层次的实体不但可以有多个下层实体,而且它可同时归属多个上层实体。例如医生可以既是门诊医生又是病房医生还是附属学校的教师;病人可以由两个医生共同负责治疗。现实生活中多数网状结构比较复杂,其数据处理也很繁琐,而且适合于这一网状结构的处理方法往往不适合于别的网状结构。实际上,在多数数据库系统中,复杂网状结构常常先转变为简单网状结构或层次结构来处理。网状模型和层次模型在本质上是一样的。从逻辑上看,他们都是基本层次联系的集合,用结点表示实体,用有向边表示实体间的联系;从物理上看,他们每一个结点都是一个存储记录,用链接指针来实现记录之间的联系。当存储数据时,这些链接指针就固定下来了,数据检索时必须考虑存取路径问题;数据更新时,涉及链接指针的调整,缺乏灵活性;系统扩充相当麻烦,网状模型中的指针更多,纵横交错,从而使数据结构更加复杂。
3、关系模型
关系模型(relation model)是用二维表的形式来表示实体和实体间联系的数据模型。从用户观点来看,关系的逻辑结构是一个二维表,在磁盘上以文件形式存储。用编制的一张二维表格来表达现实世界中实体间的相互关系是最常用的也是最熟悉的方法。表格是同类各属性的集合。在一张二维表中,一个关系就是一张二维表,以文件的形式存储在磁盘上。一个竖列反映实体的某一属性,称之为字段。实体的多方面特性可用多个竖列来反映;表中的一行形成一个实体,称之为记录(或元组),它由各个数据项( 字段值)所组,反映了某一实体的所有有关特性。这样由若干行、若干列组成的二维表可以用来反映同类实体( 或实体集)的所有有关信息。由于表中的实体属于同一类实体,这些实体才联系在一起,使它们具有某种共同的特征。这样的二维表格也称作“关系表”。
在关系表格的处理中,具有下列三种基本操作:
(1)投影。是从关系表格中选取指定的某些字段(即某些列),以形成新的关系。
(2)选择。是从关系表格中选取满足某种条件的记录(即某些行),以建立新的关系
(3)连接。连接是把两个关系中属性满足一定条件的记录结合在一起形成新的关系。
因为关系式数据结构具有坚实的数学理论基础,简单、明了、直观、容易理解和掌握,它已成为几种数据模型中最主要的模型。自 20 世纪 80 年代以来,新推出的数据库管理系统几乎都支持关系模型,因此,关系式数据库被认为是今后数据库的发展方向。
4、面向对象模型
从数据库技术诞生以来,数据库系统已发展到第三代。第一代数据库系统为层次式数据库系统(IMS)和网状式数据库系统( DBTG)。它们的数据模型使用层次模型和网状模型。这些模型用图描述,是满足一定条件的基本层次联系的集合。第二代数据库系统为关系数据库系统( SYSTEMR)。它的数据模型是关系模型。第三代数据库系统是面向对象的数据库系统,它的数据模型是面向对象模型(OOM ,objectoriented model)。虽然在数据处理领域中普遍使用关系模型数据库,但是随着计算机技术的飞速发展,新的应用领域不断出现,它们对数据处理技术的要求也比一般事务处理环境复杂得多。在很多领域中,一个对象由多个属性来描述,而其中某些属性本身又是另一个对象,也有自身的内部结构,构成复杂对象。例如,计算机辅助设计 CAD 的图形数据;多媒体应用的图像、声音和文档等。应用领域的扩展对数据库技术提出了许多新的要求。面向对象的数据库是面向对象的概念与数据库技术相结合的产物。面向对象模型中最基本的概念是对象(object)和类(class)。
(1)对象。是对信息世界中实体的模拟,实体的各种属性在对象中亦用属性(attribute)来刻画,但与传统的模型有所不同。一个对象属性的值又可为另一个对象所用,这种嵌套结构可构造出任意复杂的对象。在 OOM 中,实体的行为用一组方法(method)或操作(operation)表示,并把它们与描述实体结构的属性封装为一个整体,即对象。因此,对象由属性和操作两部分组成。每个对象有一个惟一性标识(OID,objectidentity),对象是 OOM 的基本要素。
(2)类。把同类对象抽象为类,并给予命名。每个类由两部分组成,其一是对象类型;其二是对这个对象类型进行的操作方法。同类对象具有相同的属性和方法。这样,一个类定义由类名、属性和方法构成。对象的状态是描述该对象属性值的集合,对象的行为是对该对象操作的集合。类的定义使得共享同样属性集合和方法集合的对象组合成一类。一个类就是某同类所有对象的集合,该集合的任一子集可对应一个新类,成为原类的子类( subclass),而原类成为该子类的超类(superclass)。
(3)类层次。一个系统中所有的类和子类组成一个树状的类层次。在类层次中,子类除了继承其超类的所有属性和方法外,还可以定义新的属性和方法,但只需定义特殊的对象类型和方法即可,有利于实现扩充。例如研究生除继承了大学生的所有属性外,还定义了新的属性:研究方向、指导教师等。树状类层次由于面向对象模型中不仅包括描述对象状态的属性集,而且包括类的方法及类层次,具有更加丰富的表达能力。因此,面向对象的数据库比层次、网状、关系数据库使用方便。但由于模型复杂,系统实现起来难度大。目前,已出现了一些商用面向对象的数据库系统,但尚未被广泛使用。