
1.3 数据库系统的结构
数据库系统的体系结构有不同的划分方式。可从数据库管理系统的角度将数据库系统分为3层,从外到内依次为外模式、模式和内模式。数据库的三层结构是数据的3个抽象级别,用户只要抽象地处理数据即可,不必关心数据在计算机中如何表示和存储。
1.3.1 三层模式结构
美国国家标准协会(American National Standard Institute, ANSI)的数据库管理系统研究小组于1978年提出了标准化的建议,将数据库结构分为3级:面向用户或应用程序员的用户级、面向建立和维护数据库人员的概念级、面向系统程序员的物理级。
用户级对应外模式,概念级对应概念模式,物理级对应内模式,这样可使不同级别的用户的数据库形成不同的视图。数据库的三级模式是数据库在3个级别(层次)上的抽象,它可使用户逻辑地、抽象地处理数据,而不必关心数据在计算机中的物理表示和存储。
为了实现3个抽象级别的联系和转换,数据库管理系统在三层结构之间提供了两层映像:外模式/模式映像和模式/内模式映像,如图1-5所示。

图1-5 数据库系统的三级模式
下面将分别介绍三层模式结构和两层映像功能。
1.外模式
外模式(External Schema)又被称为用户模式,是数据库用户和数据库系统的接口,是数据库用户的数据视图,是数据库用户可以看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。
一个数据库通常有多个外模式。当不同用户在应用需求、保密级别等方面存在差异时,其外模式描述就会有所不同。一个应用程序只能使用一个外模式,但同一外模式可为多个应用程序所使用。外模式是保证数据库安全的重要措施,它能使每个用户只看到和访问所对应的外模式中的数据,而对数据库中的其他数据均不可见。
2.内模式
内模式(Internal Schema)又被称为存储模式(Storage Schema),是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。
内模式用于描述记录的存储方式、索引的组织方式、数据是否压缩及是否加密等,但内模式并不涉及物理记录,也不涉及硬件设备。例如,对硬盘的读写操作是由操作系统(其中的文件系统)来完成的。
数据按外模式的描述提供给用户,按内模式的描述存储在硬盘上,因此一个数据库只有一个内模式。内模式依赖于全局逻辑结构,但可以独立于具体的存储设备。
3.模式
模式(Schema)是所有数据库用户的公共数据视图,是对数据库中全部数据的逻辑结构和特征的描述。模式不但可以描述数据的逻辑结构,如数据记录的组成,各数据项的名称、类型及取值范围,而且可以描述数据之间的联系、数据的完整性及安全性要求。
可将模式细分为概念模式(Conceptual Schema)和逻辑模式(Logical Schema),其中的概念模式可用实体—联系模型来描述,逻辑模式则是以某种数据模型(如关系模型)为基础,综合考虑所有用户的需求并使其形成全局逻辑结构。
在三层模式结构中,模式是数据库的核心与关键。一个数据库只有一个模式,外模式通常是模式的子集。模式介于外、内模式之间,既不涉及外部的访问,也不涉及内部的存储,从而起到隔离作用,有利于保持数据的独立性。
1.3.2 两层映像功能
映像(Mapping)就是一种对应规则,用于说明映像双方如何进行转换。
1.外模式/模式映像
通过外模式与模式之间的映像,可以把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来。由于一个模式与多个外模式对应,因此,每个外模式都有一个外模式/模式映像,用于描述该外模式与模式之间的对应关系。
外模式/模式映像通常被放在外模式中描述。当模式被改变,如增加新的属性、修改属性的类型时,可只对外模式/模式映像作相应的调整,使外模式保持不变,那么以外模式为依据的应用程序就不受影响,从而保证了数据与程序之间的逻辑独立性,也就是数据的逻辑独立性。
2.模式/内模式映像
可通过模式与内模式之间的映像把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。由于数据库只有一个模式,也只有一个内模式,因此模式/内模式映像也只有一个。
模式/内模式映像通常被放在内模式中描述。当内模式改变,如存储设备或存储方式有所改变时,可只对模式/内模式映像作相应的调整,使模式保持不变,那么应用程序就不受影响,从而保证了数据与程序之间的物理独立性,也就是数据的物理独立性。
1.3.3 数据库的体系结构与数据独立性
数据独立性是指应用程序和数据结构之间相互独立、互不影响,是数据库系统的最基本的特征之一。数据独立性包括数据逻辑独立性和数据物理独立性:逻辑独立性表示当模式发生变化时,无需改变外模式或应用程序的能力;物理独立性表示不会因为内模式发生改变而导致概念模式发生改变的能力。
从上面的介绍可以看出,数据库结构的三层模式、两层映像为系统提供了高度的数据独立性。一方面,由于应用程序是在外模式所描述的数据结构的基础上编写的,因此外模式的稳定性就保证了应用程序的稳定性;另一方面,由于有两层映像,因此在内模式发生变化,甚至模式发生变化时,都可以使外模式在最大限度上保持不变。
外模式/模式的映象定义了外模式与模式的对应关系,当需要修改模式,如增加属性或修改属性时,只需对外模式/模式映象进行修改,而不用对外模式进行修改,这就保证了基于外模式的应用程序可以照常使用,从而保证了数据的逻辑独立性。
模式/内模式的映象定义了数据的全局逻辑结构与存储结构的对应关系。当存储结构发生变化,即存储设备或存储方式被改变时,只需改变模式/内模式映象,而不用改变模式,即数据的逻辑结构,这样,即便是在服务器的物理存储设备不断更新的情况下,数据的逻辑结构也仍然能保持稳定,即保证了数据的物理独立性。