
1.5 数据库系统的体系结构
数据库系统的体系结构是数据库系统的一个总的框架。尽管实际的数据库系统软件产品多种多样,它们支持的数据模型也不一定相同,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但是绝大多数数据库系统在总的体系结构上都具有三级模式的结构特征。
1.5.1 数据库系统的三级模式结构
数据库系统的三级模式结构由外模式、模式和内模式组成,如图1-13所示。这三级模式是对数据的3个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的表示和存储。为了实现这3个抽象层次的联系和转换,数据库系统在这三级模式中提供了两层映像:外模式/模式映像;模式/内模式映像。

图1-13 数据库系统的三级模式结构
1. 模式
模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序和开发工具无关。
模式实际上是数据库数据在逻辑级上的视图,一个数据库只有一个模式,数据库模式以某一种数据模型为基础,综合考虑了所有用户的需求,并将这些需求有机地整合成一个逻辑整体。
模式不仅仅要定义数据的逻辑结构,而且要定义与数据有关的安全性、完整性要求;不仅要定义数据记录内部的结构,而且要定义这些数据项之间的联系,以及不同记录之间的联系。
数据库管理系统提供模式数据描述语言(模式DDL)来描述模式。
2. 外模式
外模式也称子模式或用户模式,是数据库用户看到的数据视图,它是与某一应用有关的数据的逻辑表示。
外模式通常是模式的子集,它是各个用户的数据视图。由于不同的用户其需求不同,看待数据的方式不同,对数据的要求不同,使用的程序设计语言也可以不同,因此不同用户的外模式描述是不同的。即使对模式中的同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同。
数据库管理系统提供外模式数据描述语言(外模式DDL)来描述外模式。
3. 内模式
内模式是全体数据库数据的内部表示或者低层描述,用来定义数据的存储方式和物理结构。
内模式通常用内模式数据描述语言(内模式DDL)来描述和定义。
1.5.2 数据库的二级映像与数据的独立性
1. 外模式/模式映像
对应于同一个模式,可以有任意多个外模式。外模式/模式的映像定义某一个外模式和模式之间的对应关系。当模式改变时,外模式/模式的映像要作相应的改变(由DBA负责)以保证外模式保持不变。
2. 模式/内模式映像
模式/内模式映像定义数据的逻辑结构和存储结构之间的对应关系,它说明逻辑记录和字段在内部是如何表示的。这样当数据库的存储结构改变时,可相应修改模式/内模式的映像,从而使模式保持不变。
正是由于上述这二级映像功能,才使得数据库系统中的数据具有较高的逻辑独立性和物理独立性。数据库这种多层次的结构体系可进一步阐述如下。
(1)在定义一个数据库的各层次结构时,全局逻辑结构(即模式)应该首先定义,因为它独立于数据库的其他所有结构描述。
(2)内模式(存储模式)是依赖于全局逻辑结构的,其目的是具体地将数据库模式中所定义的全部数据及其联系进行适当的组织并加以存储,以实现较高的时空运行效率。存储模式独立于任何一个用户的局部逻辑结构描述(外模式)。
(3)用户的外模式独立于存储模式和存储设备,它必须在数据库的全局逻辑结构描述(模式)的基础上定义。一个子模式一旦被定义,则除非模式结构的变化使得子模式中的某些数据无法再从数据库中导出,否则子模式将不必改变。通过调整外模式/模式映像可实现这一点。这就是子模式对于模式的相对独立性,即逻辑数据独立性。
(4)应用程序是在子模式的数据结构上编制的,因此,它必然依赖于特定的子模式。但是,在一个完善的数据库系统中,它是独立于存储设备和存储模式的,并且只要数据库全局逻辑模式的变化不导致其对应的子模式的改变,则应用程序也是独立于数据库模式的。