1.4 数据库系统结构

在一个数据库系统中,各种不同类型的人员(或用户)都需要与数据库打交道。他们从不同的角度、以各自的观点来看待数据库,从而形成了数据库系统不同的视图结构。因此,考察数据库系统的结构可以有多种不同的层次或不同的视角。

若从数据库管理员(DBA)的视角来看,数据库系统可分为内部系统结构和外部体系结构。其中内部系统结构通常采用三级模式结构,而外部体系结构通常表现为集中式结构、分布式结构和并行结构等。

若从数据库应用的用户(如应用程序的编写人员)的角度来看,目前数据库系统通常有客户/服务器结构和浏览器/服务器结构,这也是数据库系统整体的运行与应用结构。

本节主要介绍数据库系统的三级模式结构和运行与应用结构。

1.4.1 数据库系统的三级模式结构

从数据库管理员的角度来审视数据库系统,其内部基本上遵循美国国家标准协会和计算机与信息处理委员会中的标准计划与需求委员会(ANSI/SPARC)的数据库管理系统研究组提出的三级体系结构,即用户级、概念级和物理级。该结构也是目前各个不同数据库管理系统产品所遵循的体系结构准则。也就是说,尽管不同的数据库管理系统产品,可以使用不同的数据库语言,可以支持不同的数据模型,可以建立在不同的操作系统之上,但是它们在体系结构上通常具有相同的特征,即采用三级模式结构,并提供二级映像功能。具体而言,数据库系统的三级模式结构是指数据库系统是由模式(Schema)、外模式(External Schema)和内模式(Internal Schema)三级构成的,如图1.19所示。

图1.19 数据库系统的三级模式结构

(1)模式。

在三级模式结构中,模式(Schema)也称为概念模式或逻辑模式,它是数据库中全体数据的逻辑结构和特征的描述,是所有数据库用户的公共数据视图。如图1.19所示,数据库按照外模式的描述向用户提供数据,按照内模式的描述存储数据,而模式是这两者的中间层,它既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及程序设计语言(如PHP、Java、C)无关,同时一个数据库只有一个模式,且相对稳定。DBMS提供模式描述语言(Schema DDL)来严格地定义模式。

模式由若干个概念记录类型组成,模式不仅要定义数据的逻辑结构,还要定义数据之间的联系,定义与数据相关的安全性、完整性等要求。

(2)外模式。

在三级模式结构中,外模式也称为子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。外模式实际上是用于满足不同数据库用户需求的数据视图,即用户视图,其通常是模式的子集,也可以是整个模式。如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述就不相同,并且模式中同样的数据,在外模式中的结构、类型、长度、保密级别等都可以不同。如1.19所示,一个数据库可以有多个不同的外模式,允许它们有一定的重叠,且同一个外模式可以被某一用户的多个应用系统使用,但一个应用程序只能使用一个外模式。

外模式由若干个外部记录类型组成。外部模式最接近用户,是单个用户所能看到的数据特性。外模式是用户与数据库系统的接口,是用户用到的那部分数据的描述,用户使用数据操纵语言(DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作。

例如,在一个学校的管理信息系统中,教务处子系统用户只能看到教师的授课信息、学生的选课及成绩信息,人事处子系统用户只能看到教师的基本资料信息,学生处子系统用户只能看到学生的基本资料信息,而学校管理信息系统的数据库则存储的是这些信息数据的总集合。

因此,外模式是保证数据库安全的重要措施,每个用户只能看见和访问所对应的外模式中的数据,而数据库的其余数据是不可见的。同时,外模式简化了数据库系统的用户接口,便于用户使用,并有效支持了数据的独立性和共享性。相应地,DBMS提供子模式描述语言(Subschema DDL)来严格地定义子模式。

(3)内模式。

在三级模式结构中,内模式也称为存储模式(Storage Schema),它是数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,涉及物理数据存储的结构和物理存储数据视图的描述。一个数据库只有一个内模式,数据库的二进制信息最终还是要存储到存储设备上,内模式就是考虑用什么算法、什么存储方式来储存这些数据,储存的数据是否要压缩或者加密。内模式实际上是整个数据库的最底层表示,但它不同于物理层,不是存储设备上的物理记录或物理块,也不涉及任何具体设备限制,是数据库管理员(DBA)所见到的,特定的DBMS所处理的数据库的内部结构。内模式定义所有内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。相应地,DBMS提供内模式描述语言(内模式DDL)来严格地定义内模式。

(4)三级模式结构的二级映像。

概括而言,模式(概念级)概括出一个数据库所需的所有数据,并抽象出这些数据间的逻辑结构和各个数据的特征。依此模式,我们才能开始建立数据库。外模式(用户级)是用户能看到的数据库中的各个表,这些表中包含的数据以及数据之间的联系(表的逻辑结构)是跟某个应用或用户具体的需求相关的。内模式(物理级)其实就是描述数据库中的所有数据在物理介质上的存储形式。

构成数据库系统三级模式结构的三个模式彼此间具有如下一些特点:

①一个数据库的整体逻辑结构和特征的描述(概念模式,即模式)是独立于数据库其他层次结构(内/外模式)的描述,它是数据库的核心,也是数据库设计的关键。

②一个数据库的内部存储模式依赖于概念模式,但存储模式独立于外部模式,也独立于具体的存储设备。

③用户逻辑结构(外模式)是在全局逻辑结构描述的基础上定义的,它面向具体的应用程序,独立于内部模式和存储设备。

④特定的应用程序是在外模式的逻辑结构上编写的,它依赖于特定的外模式,与数据库的模式和存储结构独立。

为了有效支持数据的三级抽象以及它们之间的联系和转换,DBMS通过在内部提供三级模式之间的二级映像来实现,即外模式/模式映像与模式/内模式映像。

①外模式/模式映像。所谓映像,就是一种对应规则,它指出映像双方是如何进行转换的。外模式/模式映像定义了各个外模式与概念模式之间的对应关系。由于一个数据库模式可以有多个外模式,因此对于每一个外模式,数据库系统都会有一个外模式/模式映像。这些映像定义通常在各自的外模式中加以描述。

数据库系统的模式如若发生改变,例如增加新的关系、新的属性、改变属性的数据类型等,数据库管理员(DBA)通常会对各个外模式/模式的映像做出相应的改变,以使那些对用户可见的外模式保持不变,而应用程序是根据外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性。

②模式/内模式映像。模式/内模式映像定义了数据库全局逻辑结构和物理存储之间的对应关系,这种映像定义通常是在模式中加以描述的。由于数据库中只有一个模式,且只有一个内模式,所以模式/内模式映像是唯一的。数据库系统的物理存储如若发生改变,例如选用另外一种存储结构或更换另外一个存储位置,数据库管理员(DBA)通常也会对模式/内模式映像做出相应的修改,以使数据库系统的模式保持不变,从而也不必去修改应用程序,从而实现了概念模式不受内模式变化的影响,保证了数据与程序的物理独立性。

由此可见,正是二级映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性,使得数据的定义和描述可以从应用程序中分离出去,从而简化了数据库应用程序的开发,也减少了维护应用程序的工作量。

内模式、模式、外模式三者之间的关系:

①模式是数据库的中心与关键。

②内模式依赖于模式,独立于外模式和存储设备。

③外模式面向具体的应用,独立于内模式和存储设备。

④应用程序依赖于外模式,独立于模式和内模式。

1.4.2 数据库系统的运行与应用结构

从数据库系统应用的用户角度来看,目前数据库系统常见的运行与应用结构有客户/服务器结构、浏览器/服务器结构。

(1)客户/服务器结构。

在数据库系统中,数据库的使用者(如DBA、程序编写者)可以使用命令行客户端、图形化界面管理工具、应用程序等来连接数据库管理系统,并可以通过数据库管理系统查询和处理存储在底层数据库中的各种数据。数据库系统的这种工作模式采用的就是客户/服务器结构。其中,数据库的使用者是与命令行客户端、图形化界面管理工具、应用程序等直接交互,而不与数据库管理系统直接联系。因而,在这种结构中,命令行客户端、图形化界面管理工具、应用程序等称为“客户端”“前台”或“表示层”,主要完成与数据库使用者的交互任务;而数据库管理系统则称为“服务器”“后台”或“数据层”,主要负责数据管理。这种操作数据库的模式称为客户/服务器(Client/Server, C/S)模式。

(2)浏览器/服务器结构。

浏览器/服务器结构是一种基于Web应用的客户/服务器结构,也称为三层客户/服务器结构。在数据库系统中,它将与数据库管理系统交换的客户端进一步细分为“表示层”和“处理层”。其中,“表示层”是数据库使用者的操作和展示界面,通常由用于上网的各种浏览器构成,由此减轻数据库系统中客户端的工作负担;而“处理层”也称为“中间层”,主要负责处理数据库使用者的具体应用逻辑,它与后台的数据库管理系统共同组成功能更加丰富的“胖服务器”。数据库系统的这种工作模式就称为浏览器/服务器(Browser/Server, B/S)模式。