任务1.1.2 熟悉数据库的体系结构
微课1-2
熟悉数据库的体系结构、了解数据库设计的方法及步骤
数据库的体系结构可以从不同的角度以及层次进行理解。从DBMS的角度来看,数据库采用的通常是三级模式结构,这是数据库系统内部的体系结构;从数据库最终用户的角度看,数据库系统的结构通常有3种——集中式结构、分布式结构和客户/服务器结构,这是数据库系统外部的体系结构。此处主要学习数据库系统内部的体系结构。
1.数据库的三级模式结构
数据库的三级模式结构是数据库领域公认的标准数据库体系结构,它包括模式、外模式和内模式。三级模式结构可以有效地组织和管理数据,并使数据库的逻辑独立性和物理独立性得到提高。数据库的三级模式结构如图1-5所示。
图1-5 数据库的三级模式结构
(1)模式
模式又称逻辑模式、概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它在数据库三级模式结构中处于中间层,既与数据的物理存储具体位置和硬件环境无关,也不涉及具体的应用程序、所使用的应用开发工具,以及高级程序设计语言。
模式实际上是数据库数据在概念级上的视图。每个数据库都只存在一个模式,数据库模式会将某一种数据模型作为基础,考虑所有用户的需求,然后将这些需求有机地结合成一个逻辑整体。定义模式时,不仅要定义数据的逻辑结构(如数据记录中的数据项构成,数据项的名称、类型、取值范围等),还要定义与数据有关的安全性、完整性要求,以及数据之间的联系。
描述、定义模式的语言是数据定义语言(Data Definition Language,DDL)。
(2)外模式
外模式又称子模式或用户模式,它是模式的一个子集,这个子集是被某些特定用户所使用的。从这个角度看,外模式是面向用户的。本质上,外模式描述了应用程序所使用的局部数据的逻辑结构和特征,是数据库用户(包括应用程序员和最终用户)所看到的数据视图。
外模式也是用户与数据库的接口,描述了被用户所用到的那部分数据。因为不同的用户在应用需求、看待数据的方式、对数据保密性的要求等方面都具有差异,其对应的外模式描述也有所不同。即使同一数据处于同一模式中,它们在外模式中的结构、类型、长度、保密级别等方面也可能有差别。因此,一个数据库可能具有多个外模式。有了外模式后,程序员只需关注与外模式所发生的联系,而无须再关心模式,并且只需按外模式的结构存储数据和对数据进行操作。另外,某一用户的多个应用系统也可以使用同一个外模式,但一个外模式只能为一个应用程序所使用。
在保证数据库的安全性方面,外模式是强有力的措施。有了外模式后,每个用户只能访问其所对应的外模式中的数据,而不可访问数据库中的其余数据。
(3)内模式
内模式又称存储模式,对应于物理级。它是全体数据在数据库内部的表示方式,是数据库最底层的逻辑描述。它记录了数据在存储介质上的存储方式(如顺序存储、按照B树结构存储或按哈希方法存储)、索引的组织方式、数据是否压缩存储、数据是否加密、数据存储记录结构的规定等,对应着实际存储在外存储介质上的数据库。
一个数据库系统中只有唯一的数据库,因此作为定义、描述数据库存储结构的内模式也是唯一的。
2.数据库的二级映像与数据库独立性
数据库的三级模式是对数据的3个级别抽象。它把数据的具体组织(即物理模式)留给DBMS管理,使用户无须关心数据在计算机内部的存储方式。同时,为了建立3个抽象级的联系与转换,使模式与外模式虽然并不存在于计算机的外存中,但也能通过转换获得其存在的实体,DBMS在这3个模式之间建立了二级映像:外模式/模式映像和模式/内模式映像。
这种二级映像保证了数据库系统中的数据具有较高的物理独立性及逻辑独立性,即在内模式或模式发生改变的情况下,可以通过调整映射方式,使用户的外模式不必发生改变。
(1)外模式/模式映像
模式描述了数据的全局逻辑结构,外模式描述了数据的局部逻辑结构。同一个模式可以存在任意多个外模式。每一个外模式都对应一个外模式/模式映像,它定义了该外模式与模式之间的对应关系,外模式的描述中通常包含了这些映像的定义。
当模式发生改变(如在原有记录类型之间增加新的联系、在某些记录中增加新的数据项等)时,数据库管理员可以通过改变有关的外模式/模式映像,使外模式保持不变。应用程序是根据数据的外模式编写的,因此应用程序也无须发生改变,从而保证了数据与应用程序的逻辑独立性,称为数据的逻辑独立性。
(2)模式/内模式映像
数据库中只有一个模式,也只有一个内模式,所以一个数据库只有唯一的模式/内模式映像。它通常包含在模式的描述中,定义了数据的全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构发生改变时,数据库管理员通过对模式/内模式映像进行修改,可以使模式保持不变,从而使应用程序也不用改变。这保证了数据与应用程序的物理独立性,称为数据的物理独立性。
数据库的二级映像通过保证数据的物理独立性和逻辑独立性,确保了数据库外模式的稳定性,也从底层确保了应用程序的稳定性。除非应用需求本身发生变化,否则无须对应用程序进行修改。
数据库的三级模式与二级映像实现了数据与应用程序之间的独立,使数据的定义和描述可以从应用程序中分离出来。另外,由于数据的存取由 DBMS 进行管理,因此用户无须考虑存取路径、方式等细节,从而使应用程序的编写得到简化,大大减轻了应用程序维护人员的负担。