1.4 数据库系统的结构
数据库系统的结构可以从多种不同的层次或角度进行考查。
从数据库管理角度来看,数据库系统通常采用三级模式结构。这是数据库管理系统内部的结构。
从数据库最终用户角度来看,数据库系统的结构分为集中式结构、文件服务器结构、客户端/服务器结构等。这是数据库系统外部的体系结构。
本节我们仅讨论数据库管理系统内部的结构。
数据库系统的结构是一个框架结构,这个框架用于描述一般数据库系统的概念,但并不是说所有的数据库系统都一定使用这个框架,这个框架结构在数据库中并不是唯一的,特别是一些“小”的数据库管理系统将难以支持这个体系结构的所有方面。但这里介绍的数据库管理系统的体系结构基本上能很好地适应大多数系统,而且,它基本上和ANSI/SPARC DBMS研究组提出的数据库管理系统的体系结构(称做ANSI/SPARC体系结构)是相同的。
虽然实际的数据库管理系统产品种类很多,支持的数据模型和数据库语言也不尽相同,但它们在体系结构上通常都具有相同的特征,即采用三级模式结构并提供两级映像功能。
1.4.1 三级模式结构
数据库系统的三级模式结构是指数据库系统的外模式、模式和内模式。图1-11说明了各级模式之间的关系。
从广义上讲,它们的描述如下。
内模式:最接近物理存储,是数据的物理存储方式。
外模式:最接近用户,是用户所看到的数据视图。
模式:介于内模式和外模式之间的中间层次。
从图1-11可以看出,外模式是单个用户的数据视图,而模式是一个部门或公司的整体数据视图。换句话说,外模式(外部视图)可以有许多,每一个都或多或少地抽象表示整个数据库的某一部分;而模式(概念视图)只有一个,它包含对现实世界数据库的抽象表示,注意这里的抽象指的是记录和字段这些更加面向用户的概念,而不是位和字节那样的面向机器的概念。大多数用户只对整个数据库的某一部分感兴趣。内模式(内部视图)也只有一个,它表示数据库的物理存储。
关系系统中的模式一定是关系的,在该层可见的实体是关系表和关系的操作符。
外模式也是关系的或接近关系的,它们的内容来自模式。例如,我们可以定义两个外模式,一个记录学生的姓名、性别(表示为:学生基本信息1(姓名,性别)),另一个记录学生的姓名和所在系(表示为:学生基本信息2(姓名,所在系)),这两个外模式的内容均来自“学生基本信息”这个模式。外模式对应到关系数据库中就是“外部视图”(或简称为“视图”),它在关系数据库中有特定的含义,将在第9章详细讨论视图的概念。
内模式不是关系的,因为该层的实体不是关系表的“原样照搬”。其实,不管是什么系统,其内模式都是一样的,都是存储记录、指针、索引、哈希表等。事实上,关系模型与内模式无关,它关心的是用户的数据视图。
下面从外模式开始进一步讨论这个三层结构。整个讨论过程都以图1-11为基础,该图显示了体系结构的主要组成部分和它们之间的联系。
- 外模式
外模式也称为用户模式或子模式,它是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同数据库用户需求的数据视图,是对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库整体数据结构的子集或局部重构。
外模式通常是模式的子集。一个数据库可以有多个外模式。由于它是各个用户的数据视图,如果不同的用户在应用需求、看待数据的方式、对数据保密要求等方面存在差异,则其外模式描述就是不相同的。即使对模式中同样的数据,在外模式中的结构、类型、长度等都可以不同。
外模式同时是保证数据库安全的一个措施。每个用户只能看到和访问其需要操作的外模式中的数据,将其不需要操作的数据屏蔽起来,因此保证不会出现由于用户的误操作和有意破坏而造成数据损失。
外模式就是特定用户所看到的数据库的内容,对那些用户来说,外模式就是数据库。例如,学校人事部门的用户可能把各系的教师数据的集合作为他的外模式,而不考虑各个系的用户所看见的课程和学生的记录值。
- 模式
模式也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式表示数据库中的全部信息,其形式要比数据的物理存储方式抽象。它是数据库系统结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、与所使用的应用开发工具和环境无关。
模式由许多概念记录类型的值构成。例如,可以包含学生记录值的集合、课程记录值的集合,选课记录值的集合等。概念记录即不等同于外部记录,也不等同于存储记录。
模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一种模式。数据库模式以某种数据模型为基础,综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义数据库模式时不仅要定义数据的逻辑结构,如数据记录由哪些数据项组成,以及数据项的名字、类型、取值范围等,而且还要定义数据之间的联系,定义与数据有关的安全性要求、完整性要求。
模式不涉及存储字段的表示,也不涉及对列、索引、指针或其他存储的访问细节。如果模式以这种方式真正地实现了数据独立性,那么根据这些概念模式定义的外模式也会有很强的独立性。
数据库管理系统提供了数据定义语言(DDL)来定义数据库的模式。
- 内模式
内模式也称为存储模式。内模式是对整个数据库的底层表示,它描述了数据的存储结构,如数据的组织与存储方式,又如是顺序存储、B树存储还是Hash存储,以及索引按什么方式组织、是否加密等。注意,内模式与物理层是不一样的,内模式不涉及物理记录的形式(即物理块或页,输入/输出单位),也不考虑具体设备的柱面或磁道大小。换句话说,内模式假定了一个无限大的线性地址空间,地址空间到物理存储的映射细节与特定系统有关,这些并不反映在体系结构中。
1.4.2 两级模式映像功能与数据独立性
数据库系统的三级模式是对数据的3个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。为了能够在内部实现这3个抽象层次的联系和转换,数据库管理系统在3个模式之间提供了两层映像(如图1-11所示):
外模式/模式映像
模式/内模式映像
正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性,使数据库应用程序不随数据库数据的逻辑或存储结构的变动而变动。
- 外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有多个外模式。对于每个外模式,都有一个从外模式到模式的映像,该映像定义了外模式与模式之间的对应关系。这些映像定义通常包含在各自的外模式描述中。
当模式发生变化时(如增加新的关系、新的属性或改变属性的数据类型等),可以通过外模式定义语句,调整外模式/模式映像定义,从而保持外模式不变。由于应用程序是依据数据的外模式编写的,因此应用程序也不必修改,从而保证了程序与数据的逻辑独立性,简称为数据的逻辑独立性。
- 模式/内模式映像
模式/内模式映像定义了数据库的逻辑结构与存储结构之间的对应关系。当数据库的存储结构发生改变,比如选择了另一种存储结构,只需要对模式/内模式映像做相应的调整,就可以保持模式不变,从而使应用程序也不必修改。因此,保证了数据与程序的物理独立性,简称为数据的物理独立性。
在数据库的三级模式结构中,模式是数据库的中心与关键,它独立于数据库的其他层次。设计数据库时也是首先设计数据库的模式。
数据库的内模式依赖于数据库的全局逻辑结构,但独立于数据库的用户视图,也就是外模式,也独立于具体的存储设备。内模式将全局逻辑结构中定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
数据库的外模式面向具体的数据用户,它定义在模式之上,独立于内模式和存储设备。当应用需求发生较大变化,相应的外模式不能满足用户要求时,就需要对外模式做相应的改动,因此设计外模式时应充分考虑到应用的可扩充性。
特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构相互独立。不同的应用程序有时可以共用同一个外模式。数据库的两级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
程序与数据之间的独立性,使得数据的定义和描述可以从应用程序中分离出来。另外,由于数据的存取由DBMS负责管理和实施,因此,用户不必考虑存取路径等细节,从而简化了应用程序的编写工作,减少了对应用程序的维护和修改工作。