1
数据库原理与应用技术
1.2.4.1 1.4.1 数据库系统的模式结构
1.4.1 数据库系统的模式结构

在数据库系统中,用户看到的数据与计算机中存放的数据是两回事,但二者之间是有联系的,实际上它们之间已经经过了两次变换:第一次是系统为了减少冗余,实现数据共享,把所有用户的数据进行综合,抽象成一个统一的数据视图(概念模型);第二次是为了提高存取效率,改善性能,把全局视图的数据按照物理组织的最优形式存放(物理模型)起来。

美国国家标准委员会(ANSI)所属的标准计划和要求委员会(Standards Planning and Requirements Committee,SPARC)于1975年公布了关于数据库标准报告,提出了数据库的三级组织结构,称为SPARC分级结构,分别为内模式、模式、外模式,如图1-23所示。

1. 内模式

内模式也称为存储模式,它是数据库在物理存储器上具体实现的描述,是数据在数据库内部的表示方法,也是数据物理结构和存储方式的描述。一个数据库只有一种内模式。

2. 模式

模式也称为逻辑模式或概念模式,是对数据库中全体数据的逻辑结构和特征的描述,是数据库系统模式结构的中间层,既不涉及数据存储细节和硬件环境,也不涉及具体的应用程序、所使用的应用开发工具和高级程序设计语言。

一个数据库只有一种模式。数据库模式以某种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。

图1-23 数据库系统结构图

模式是数据项值的框架。数据库系统模式通常还包含访问控制、保密定义、完整性检查等方面的内容。

3. 外模式

外模式也称为子模式或用户模式,它是用户能够看见和使用的局部数据的逻辑结构和特征的描述,是用户的数据视图,是与某一应用有关的数据的逻辑表示。

外模式一般是模式的子集,一种模式可以有多种外模式。由于它是各个用户的数据视图,所以,如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等各方面存在差异,则对外模式的描述就是不同的。即使是模式中的同一数据,其在外模式中的结构、类型、长度、保密级别等也可以不同。另外,同一外模式也可以为某一用户的多个应用系统所使用,但是一个应用程序只能使用一种外模式。

外模式是保证数据库安全的一种有力措施。用户只能看见和访问所对应的外模式中的数据,数据库中的其他数据是不可见的。

4. 模式之间的映射

数据库系统的三级模式是数据库在三个级别上的抽象,把数据的具体组织留给数据库管理系统管理,用户就能够逻辑地处理数据,而不必关心数据在计算机中的具体表示方式和存储方式。为了能够在内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映射:

(1) 外模式/模式之间的映射;

(2) 模式/内模式之间的映射。

数据库系统的独立性正是由这两层映射关系完成的,它们保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性。

1)外模式/模式之间的映射

模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。同一种模式可以有任意多种外模式与之对应。对于每种外模式,数据库系统都有一种外模式/模式之间的映射,它定义了二者之间的映射关系,当整个系统要求改变概念模型时,可以改变映射关系,而保持外模式不变。应用程序是根据数据的外模式编写的,因此不必修改应用程序,这样保证了数据与程序的逻辑独立性。这种用户数据独立于全局逻辑数据的特性称为逻辑数据独立性。

2)模式/内模式之间的映射

数据库的模式/内模式之间的映射定义了数据库全局逻辑结构与存储结构之间的对应关系。当为了某种需要改变物理模式时,可以同时改变二者之间的映射,而保持概念模式和外模式不变,应用程序也保持不变,这样它保证了数据与程序的物理独立性。这种全局逻辑数据的特性称为物理数据独立性。

在数据库的三级模式结构中,数据库模式及全局逻辑结构是数据库的核心,它独立于数据库的其他层次。因此,设计数据库模式结构时应首先确定数据库的逻辑模式。

数据库内模式依赖于它的全局逻辑结构,但独立于数据库的外模式,也独立于具体的存储设备。它将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间利用效果。

数据库的外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就应进行相应改动,故在设计外模式时应该充分考虑应用程序的扩充性。

应用程序是在外模式描述的数据结构上编写的,它依赖于特定的外模式,独立于数据库的模式和存储结构。数据库的二级映射关系保证了数据库外模式的稳定性,也从底层保证了应用程序的稳定性,实现了数据库中数据的独立性。

数据独立性是指应用程序和数据之间相互独立、不受影响,以及数据结构的修改不会引起应用程序的修改。而这种独立性正是通过以上模式之间的映射关系实现的。通过这两种映射,将用户对数据库的逻辑操作转换为对数据库的物理操作,这样保证了数据与程序之间的独立性,使数据的定义和描述可以从应用程序中分离出去。另外,数据的存取由DBMS实现,用户不必考虑存取路径等细节,从而简化了应用程序的编写,大大减少了应用程序维护和修改的工作量。