关系型数据库的体系结构
一、数据库的分级结构
ANSI/X3/SPARC的数据库管理系统研发组,在1975年公布的研究报告——“Interim Report”中,把数据库分为三级:外模式、概念模式和内模式。
如图所示:
当今流行的数据库管理系统虽有多种,所用术语也各有不同,但在数据库体系结构上仍呈现三级结构的特征。
用户级数据库是单个用户看到和使用的数据库,因此也称为用户视图(View),在许多文献中又称为子模式,对应于外模式,它是单个用户看到并获准使用的那部分数据的逻辑结构(称为局部逻辑结构),用户根据系统给出的子模型,用询问语言或应用程序去操作数据库中的数据。
概念级数据库应对于概念模式,简称模式,是对数据库所有用户的数据的整体逻辑描述(故称为数据库的整体逻辑结构),通常又称之为DBA视图,即数据库管理员看到的数据库,它是所有用户视图的一个最小并集。设立概念级的目的是为了把用户视图有机的结合成一个逻辑整体,统一的考虑所有用户要求,它涉及的仍然是数据库中所有对象的逻辑关系,而不是他们的物理关系。
物理级数据库对应于内模式,又称之为存储模式。它包含数据库的全部存储数据,这些被存储在内、外存介质上的数据也被称为原始(Raw)数据,使用户操作加工的对象。从机器的角度看,他们是指令操作处理的位串、字符和字;从系统程序员的角度看,这些数据是他用一定的文件组织方式组织起来的一个个无力文件(或存储文件),系统程序员编制专门的访问程序,实现对文件中的数据的访问。所以物理级数据库也称为系统程序员视图。
对于一个数据库系统来说,实际上存在的只是物理级数据库,它是数据访问的基础。概念级数据库只不过是物理级数据库的一种抽象(逻辑)描述,用户级数据库是用户与数据库的接口。用户根据子模式进行操作,数据库管理系统用过子模式到模式的映射将操作与概念级联系起来,又通过模式到存储模式的映射与物理级联系起来。这样一来,用户可以在较高的抽象级别上处理数据,而把数据组织的物理细节留给系统。事实上,DBMS中心工作之一就是完成三级数据库之间的转换,把用户对数据库的操作转化到物理级去执行。
二、模式及其映射
(1)模式
模式是使用模式定义语言(DDL)给出的数据库整体逻辑描述,包括逻辑记录类型和记录之间的关系。某些系统甚至把模式到存储的映射细节(如存储设备类型与地址、文件组织方式、数据压缩细节等)也包含到模式中。应该指出,处于概念级的模式不应该包含物理级的内容,否则当数据物理组织发生变化时,将引起对模式的修改,是概念级不能独立于物理级。用语言书写的模式成为原模式,机器不能直接使用,必须将此摸使用机器代码表示,变为机器使用的模式,称为目标模式。目标模式通常设计成表格形式,树结构或网络结构。为原模式设计良好的目标模式是很重要的工作。
(2)子模式
子模式是用户与数据的接口,因此每个用户必须使用一个子模式,但多个用户(特别是同类型的用户)也可以使用一个子模式。从逻辑关系上看,子模式是模式的一部分(而不说是数据库的一部分),或者说是模式的一个逻辑子集(当然也可以是整个模式)。从模式用某种规则可以导出子模式,如在关系方法中,通过关系运算就可以就可以从模式导出子模式。子模式与模式之间的对应关系称之为子模式到模式的映射,有的系统把这种映射也写在子模式中,但应指出,子模式可以做出不同模式的改变,例如在子模式中,可以略去模式的某些记录类型,数据项,改变模式中某些数据项的数据特征,改变模式中的安全、完整约束条件等。如例子:
子模式A:
学生关系框架
学生关系
学号
|
姓名
|
年龄
|
性别
|
0001
|
张三
|
19
|
男
|
0002
|
李四
|
19
|
女
|
教员关系框架
教员关系
子模式B:
学生关系框架
学生关系
学号
|
姓名
|
年龄
|
性别
|
0001
|
张三
|
19
|
男
|
0002
|
李四
|
19
|
女
|
授课关系框架
授课关系
课程号
|
课程名
|
学时数
|
任课教员
|
1001
|
微积分
|
32
|
张小三
|
1002
|
线性代数
|
64
|
李小四
|
学习关系框架
学习关系
学号
|
课程号
|
分数
|
0001
|
1001
|
90
|
0002
|
1002
|
85
|
如上例所示:使用子模式A的用户,只能访问子模式A所对应的数据,而使用子模式B的用户只能访问子模式B对应的数据。描述子模式的语言称为子模式DDL,子模式也有相应的源形式与目标形式。给用户以子模式有以下好处:
·接口简单,使用方便。用户只要依照子模式编写应用程序或在终端派人操作命令,无需了解数据库的存储结构。
·保证数据独立性。应用脱离了数据的物理组织,使得改变数据的物理组织方式和引进新的存储设备无需修改或重编应用程序。
·提供数据共享性。用同一模式产生出不同的子模式,减少了数据的冗余度。
·独立数据,安全保密。用户通过程序只能操作其子模式范围内的数据,从而使程序错误传播的范围最小,同时保证了其它数据的安全。
(3)存储模式
存储模式是数据在物理存储结构方面的描述,他除了定义所有的内部记录类型外,还定义一些索引、存储分配以及恢复等方面内容的细节。但是更具体的物理存储细节,比如从磁盘读写某些数据块等,存储模式一般并不予考虑,而是交给操作系统来完成。
描述存储模式的语言称为存储模式DDL,存储模式亦有源模式与目标模式之分,其目标模式与模式和子模式的目标模式均存在于系统数据字典中,供系统随时查用。
(4)模式到存储模式的映射
此映射主要给出概念级数据与物理级数据的对应关系。这表现在两个方面:一是数据结构的交换,即逻辑记录及组成纪录的数据项如何对应到内部纪录的数据项上去;另一方面,是逻辑数据如何在物理设备上定位。在概念级与内部级之间存在这样一个映射,就能保证当存储模式发生变化时(如存储设备、文件组织方式、存储位置等发生变化),只要修改此映射即可,而模式应尽量不受到任何影响,从而对子模式和应用程序影响更小,到达所谓物理数据独立。通常情况下,模式到存储模式的映射在存储模式中描述。
(5)子模式到模式的映射
此映射主要给出外部级与概念级的对应关系。这两级的数据结构以及数据量纲可能不一致,子模式中某些数据项甚至是由若干数据项导出的,在数据库中并不真实存在。因此在映射中需要说明子模式中的记录类型和数据项如何对应着模式中的记录和数据项以及导出的规则步骤(若为导出项)。在外部级与概念级之间存在这样一个映射,就能保证当模式发生变化时,只要修改记录及数据项的对应关系或导出规则,可能不必修改子模式,用户根据子模式设计的应用程序就可继续延用,达到所谓逻辑数据独立性。通常情况下,子模式到模式的映射在模式中描述。