三层模式体系结构和数据独立性
第1.3节中列出了数据库方法的4个重要特点,其中有以下3个特点:(1)程序与数据分离(程序-数据独立性和程序-操作独立性);(2)支持多用户视图;(3)使用编目存储数据库描述(模式)。在这一节中,我们将为数据库系统指定一个体系结构,这称为三层模式体系结构(three-schema architecture)⑧,提出这个体系结构的目的在于帮助实现这些特点,并使这些特点更为直观。在此之后将进一步讨论数据独立性的概念。
2.2.1 三层模式体系结构
如图2.2所示,三层模式体系结构的目的是将用户应用与物理数据库分离开来。在这个体系结构中,可以将模式定义在如下3个层次:
1. 内部层(internal level)有一个内模式(internal schema),它描述的是数据库的物理存储结构。内模式使用一个物理数据模型,全面描述了数据库中数据存储的全部细节和存取路径。
2. 概念层(conceptual level)有一个概念模式(conceptual schema),它为用户群体描述了整个数据库的结构。概念模式隐藏了物理存储结构的细节,并重点描述实体、数据类型、关系、用户操作和约束。通常,实现了一个数据库系统之后,会使用一个表示数据模型来描述概念模式。这种实现概念模式通常以高级数据模型中的一个概念模式设计为基础。
3. 外部层(external level)或视图层(view level)包括许多外模式(external schema)或用户视图(user view)。每个外模式描述的是一个特定用户组所感兴趣的那部分数据库,而对该用户组隐藏了数据库的其他部分。与第2点中介绍的一样,各个外模式通常都用一个表示数据模型实现,并且可能以高级数据模型的一个外模式设计为基础。
图2.2 三层模式体系结构 |
三层模式体系结构是一个非常方便的工具,通过这个结构,用户就可以直观地了解数据库系统中的模式层次。大多数DBMS并不是将这三层模式完全分离开来,而只是在一定程度上支持三层模式体系结构。有些DBMS可能在概念模式中还包括一些物理层的细节。在大多数支持用户视图的DBMS中,外模式也是用描述概念层信息的同一数据模型来指定的。当然,有些DBMS也允许在概念层和外部层使用不同的数据模型。
请注意,这3个模式只是数据的描述,而实际存在的数据都在物理层中。在一个基于三层模式体系结构的DBMS中,每个用户组只引用其自己的外模式。因此,DBMS必须将指定给外模式的请求转换为一个面向概念模式的请求,然后再转换为一个内模式上的请求,以处理存储数据库。如果一个请求要求检索数据库,那么对从存储数据库中抽取出来的数据必须重新格式化,以便与用户外部视图相匹配。在各层间完成请求和结果转换的过程称为映射(mapping)。映射可能很耗时,所以有些DBMS(特别是那些用于支持小型数据库的DBMS)并不支持外部视图。但即便是在这样的系统中,还是需要一定的映射来在概念层和内部层间转换请求。
//原文出处