数据库系统在我们的数字世界中扮演着至关重要的角色,无论是个人设备还是企业级应用,数据的有效管理和访问都是必不可少的。而数据库系统的模式结构是确保数据一致性和可访问性的关键组成部分。
数据库系统模式
基本概念
型和值
数据模型中有 型(type) 和 值(value) 的概念
- 型(type):对某一类数据的结构和属性的说明
- 值(value):是型的一个具体赋值
模式与实例
模式
(schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述不涉及具体的值。
模式的一个具体值称为模式的一个实例(instance)。同一个模式可以有很多实例。
模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新的。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
例如,在 学生选课数据库模式 中包含学生记录、课程记录和学生选课记录,现有一个具体的 学生选课数据库实例,该实例包含了 2013 年学校中所有学生的记录(如果某校有 10000 个学生,则有 10000 个学生记录)、学校开设的所有课程的记录和所有学生选课的记录。
虽然实际的数据库管理系统产品种类很多,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但它们在体系结构上通常都具有相同的特征,即采用三级模式结构(早期微机上的小型数据库系统除外)并提供两级映像功能。
三级模式结构
数据库系统的三级模式结构是指数据库系统是由外模式、模式(概念模式)和内模式三级构成。一个数据库中外模式可以有一个或多个,内模式和概念模式只能各有一个。
模式
模式(schema)又称概念模式或逻辑模式,对应于概念级。可理解为用户看到的表。
-
它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图),综合了所有用户的需求。
-
模式是数据库模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,又与具体的应用程序、所使用的应用开发工具及高级语言无关。
-
模式是由数据库管理系统提供的数据模式描述语言
DDL
(Data Description Language)来描述、严格定义的,体现、反映了数据库的整体观。 -
定义模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等,还要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
外模式
外模式(external schema)又称子模式或用户模式,对应于用户级。是数据库用户(包括程序员和最终用户)能够看见和使用的局部的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑描述。可理解为视图
-
外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据,所以模式与外模式的关系为一对多。
-
一个数据库可以有多个外模式,反映了不同用户的需求(如普通用户与 VIP 用户)反映了数据库的用户观。
-
特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。同一个外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式
-
用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言
DML
(Data Manipulation Language)来严格定义外模式,并对这些数据记录进行操作。 -
外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的
内模式
内模式(internal schema)又称存储模式,对应于物理级,是数据在数据库内部的组织方式,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。
在一个数据库系统中,只有唯一的数据库, 因而作为 定义/描述
数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。
设计三级模式
在数据库的三级模式结构中,数据库模式即全局逻辑结构是数据库的中心与关键,它独立于数据库的其他层次。因此设计数据库模式结构时应首先确定数据库的逻辑模式。
数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图,即外模式,也独立于具体的存储设备。它是将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
数据库的外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应的外模式不能满足其视图要求时,该外模式就得做相应改动,所以设计外模式时应充分考虑到应用的扩充性。
二级映像
数据库系统的三级模式是数据的三个抽象级别,它把数据的具体组织留给数据库管理系统管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。
为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像 和 模式/内模式映像。
这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。
当模式改变时(如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个 外模式/模式 的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。
模式/内模式映像
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的。
该映像定义通常包含在模式描述中。当数据库的存储结构改变时(例如选用了另一种存储结构),由数据库管理员对 模式/内模式映像 作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性
总结
数据库系统模式的设计是数据管理的关键,它不仅增强了数据的安全性和隐私,还确保了数据的高可用性和灵活性。通过理解和应用这些模式,我们能够更好地设计和管理数据库系统,确保其高效、安全和用户友好。