1. 三级模式结构
为了保障数据与程序之间的独立性,使用户能以简单的逻辑结构操作数据而无须考虑数据的物理结构,简化应用程序的编制和程序员的负担,增强系统的可靠性,通常DBMS将数据库的体系结构分为三级模式:外模式、模式、和内模式。
![](https://ichistudio.cn/wp-content/uploads/2023/12/图片-36.png)
1.1 外模式
外模式也称为用户模式或子模式,它的内容来自模式。
外模式是对现实系统种用户感兴趣的整体数据的局部描述,用于满足数据库不同用户对数据的需求。
外模式是对数据库用户能够看得见和使用局部数据的逻辑结构和特征的描述,是数据库整体结构(即模式)的子集或局部重构。
外模式通常是模式的子集。
一个数据库可以有多个外模式。
由于它是各个用户的数据视图,如果不同的用户在应用需求、看待数据的方式、数据保密要求等方面存在差异,则其外模式的描述就是不同的。
即使模式中同样的数据,在外模式中的结构、类型、长度等也可能不同。
1.2 模式
模式也称为逻辑模式或概念模式,是对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式表示数据库中的全部信息,其形成要比数据的物理存储方式抽象。
它是数据库结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的开发工具和环境无关。
模式由许多概念记录类型的值构成。例如,可以包含学生记录值的集合、课程记录值的集合、选课记录值的集合等。
概念记录既不等同于外部记录,也不等同于存储记录,它是数据的一种逻辑表达。
模式实际上是数据库数据在逻辑级上的视图。
一个数据库只有一种模式。
数据库模式以某种数据模型为基础,综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。
定义数据库模式时不仅要定义数据的逻辑结构,如数据记录由哪些数据项组成,数据项的名字、类型、取值范围等,还要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
模式不涉及存储字段的表示,不涉及存储记录对列、索引、指针或其他存储的访问细节。
如果模式以这种方式真正地实现了数据独立性,那么根据这些模式定义的外模式也会有很强的独立性。
关系数据库中的模式一定是关系的。
关系数据库管理系统提供了模式定义语言(DDL)来定义数据库的模式。
1.3 内模式
内模式也称为存储模式。
内模式是对整个数据库的底层表示,它描述了数据的存储结构,如数据的组织与存储方式,是顺序存储、B树存储,还是散列存储,索引按什么方式组织,是否加密等。
注意,内模式与物理层不一样,它不涉及物理记录的形式,也不考虑具体设备的柱面或磁道大小。
换句话说,内模式假定了一个无限大的线性地址空间,地址空间到物理存储的映射细节与特定系统有关,并不反映在体系结构中。
内模式不是关系的,它是数据的物理存储方式。
其实不管是什么系统,其内模式都一样,都存储记录、指针、索引、散列表等。
事实上,关系模型与内模式无关,它关心的是用户的数据视图。
2. 两级映像
数据库的三级模式结构是数据的三个抽象级别。
它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。
三级模式结构之间差别往往很大,为了实现这三个抽象级别的联系和转换,DBMS在三级莫斯结构之间提供了两级映像:外模式/模式映像和模式/内模式映像
2.1 外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构,对应于同一个模式可以有任意多个外模式。
对于每个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式于模式之间的对应关系。
这些映像定义通常包含在各自外模式的描述中。
当模式改变时(如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像做相应改变,可以使外模式保持不变。
应用程序是依据数据的外模式编写的,因而应用程序不必修改,保证了数据与程序的逻辑独立性,简称为逻辑数据独立性。
2.2 模式/内模式映像
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据库全局逻辑结构与存储结构之间的对应关系。
例如,说明逻辑记录和字段在内部是如何表示的。
该映像定义通常包含在模式描述中。
当数据库的存储结构改变了(如选用了另一种存储结构),由数据库管理员对模式/内模式映像做相应改变,可以保证模式保持不变,因而应用程序也不必改变。
保证了数据与程序的物理独立性,简称为物理数据独立性。