数据库系统课程笔记
三级模式
原文地址 www.51cto.com,本文我们主要介绍数据库的三级模式:外模式、模式和内模式的一些知识,希望能够对您有所帮助。
对于数据库的三级模式和两级映射,可能我们并不陌生。三级模式指的是外模式、模式和内模式。两级映射指的是外模式 - 模式和模式 - 内模式。本文我们主要介绍一下数据库的三级模式的一些知识,希望能够对您有所帮助。
一、模式(Schema)
定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
理解: ① 一个数据库只有一个模式; ② 是数据库数据在逻辑级上的视图; ③ 数据库模式以某一种数据模型为基础; ④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。
二、外模式(External Schema)
定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
理解: ① 一个数据库可以有多个外模式; ② 外模式就是用户视图; ③ 外模式是保证数据安全性的一个有力措施。
三、内模式(Internal Schema)
定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照 B 树结构存储还是按 hash 方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。
理解: ① 一个数据库只有一个内模式; ② 一个表可能由多个文件组成,如:数据文件、索引文件。 它是数据库管理系统 (DBMS) 对数据库中数据进行有效组织和管理的方法 其目的有: ① 为了减少数据冗余,实现数据共享; ② 为了提高存取效率,改善性能。
例子
本文由 简悦 SimpRead 转码, 原文地址 www.zhihu.com
这张图表示数据库管理系统(DBMS)从三个层次来管理数据:外部层次(External Level)、概念层次(Conceptual Level)和内部层次(Internal Level)。其中外部层次的数据是用户所看到的数据,所以又叫『用户』层次;概念层次的数据是 DBMS 中全局管理(可以简单地理解为所有的)数据,及数据之间的约束,所以又叫『逻辑』层次;内部层次的数据是存储在介质上的数据,包括存储路径、存储方式、索引方式等,所以又叫『物理』层次。
而『模式』,就是『对于数据的结构性描述』,所以对于不同层次的数据,就对应着不同层次的模式,分别是:外模式(用户模式)、模式(概念模式 / 逻辑模式)与内模式(物理模式)。
在一个数据库系统中,『模式』与『内模式』都只能有一个,但『外模式』可以有很多个。原因是『模式』是对 DBMS 中所有数据的全局性的结构描述,所以只能有一种形式。举个例子:一个学校的数据库中要存放所有学生、课程与选课记录的信息。我们可以用三张表:学生信息表、课程信息表与选课记录表来存放所有的数据。但是存放学生的数据的时候,我们只能够选取某一种特定的结构对学生的信息进行描述,而不能多种不同的结构共存(比如两张不同结构的学生表,存放的都是所有学生的信息)。所以『模式』只能有一个。同样,我们在介质上存放数据的时候,也只能选取某一种特定的存储路径(数据文件在哪个文件夹下)、存储方式(二进制 / 文本)、索引方式(聚簇索引,普通索引)等等,可以理解为一种数据结构,和具体的计算机语言没什么关系,也不能够像程序一样执行。
至于『外模式』,是以『视图』的形式展现给用户的,所以我猜你对于外模式理解错误的原因,就是理解错误了『视图』的概念。这里的『视图』不是我们平时说的 UI ,而是指数据库中的视图,又叫『虚表』,是相对于『基本表』来说的。这里的『基本表』指的就是我们在建立数据库的时候需要创建的那些数据表(用 CREATE TABLE 创建出来的),而视图,是对这些基本表中的数据的某种展现形式,是这些数据的一个子集,但不限于某张表中的数据的子集,也可以是多张表联合起来进行显示的一组数据。比如在一个学校的教务系统中,我们希望每个学生只能够看到自己的成绩,普通老师可以看到他 / 她教的学生的成绩,系主任可以看到这个系中所有学生的成绩,校长可以看到学校中每个学生的成绩。那么我们可以基于所有学生的成绩数据,针对于不同权限的用户选取不同的子集,这个子集就是所谓的『视图』。但需要注意的是,『视图』本身并不『实际』存放数据,而只是对于如何选取数据的一种描述,这也是所谓的『虚』。当全局数据改变的时候,视图中的数据也会随之改变。通过外模式,可以让不同的用户(包括应用程序)看到他们希望看到的(比如可以同时看到学生本人的信息及他 / 她的所有成绩与对应的课程的信息,而这些数据实际上是分别存在于不同的数据表中的),或是我们希望他们看到的数据(通过不同的子集来实现)。
总而言之,三种层次的模式都是对于数据的描述,只不过描述的层次不同。
二级映像
简明总结 1
本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net
数据库系统的三级模式:外模式、模式、内模式。
模式(逻辑模式、概念模式):实际上是数据库数据在逻辑级上的视图。描述的是全局逻辑结构。一个数据库只要一个模式。模式是数据库的中心与关键,它独立与其他层次。设计数据库模式结构时应首先确定数据库的逻辑模式。DBMS 提供模式描述性语言来严格定义模式。
外模式(子模式、用户模式):数据库用户能够看见和使用的局部数据的逻辑结构和特征,是数据库用户的数据视图。描述的是局部逻辑结构。是模式的一个子集。一个数据库可以有多个数据库内模式。每个用户只能看见和访问对应的外模式中的数据,数据库中的其余数据是不可见的。是保证数据库安全性的有力措施。同一外模式也可以为用户的多个应用程序使用,但一个应用程序只能使用一个外模式。它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应外模式不能满足其视图要求,该外模式就应该做出相应的改变。设计外模式的时候应充分考虑到应用的扩展性。DBMS 提供子模式描述性语言来严格定义子模式。
内模式(存储模式):一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据库内部的表示方法。比如记录什么存储方法存储,索引按照什么方式组织。数据是否压缩存储,是否加密。数据库存储记录结构有何规定。它依赖于全局逻辑结构,但独立于数据库的用户视图和存储设备。它将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以实现达到较好的时间与空间效率的目的。DBMS 提供内模式描述性语言来严格定义内模式。
二级映像:
外模式 / 模式映像:
数据库系统都有一个外模式 / 模式映像。它定义了该外模式与模式之间的对应关系。这些映像通常包含在各自外模式的描述中。当模式改变时(增加新的关系、新的属性、改变属性的数据类型),需要数据库管理员对各个外模式 / 模式的映像做相应改变,也可以是外模式保持不变。应用程式是依据数据的外模式编写的。因此应用程序也不必修改,这保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式 / 内模式映像:
模式 / 内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。比如说明逻辑记录和字段在内部是如何表示。该映像定义通常包含在模式描述中。当数据库的存储结构改变时,由数据库管理员对模式 / 内模式映像做相应改变。可以使模式保持不变,因此应用程序也不必改变,这就保证了数据与程序的物理独立性,简称数据的物理独立性。
简明总结 2
本文由 简悦 SimpRead 转码, 原文地址 cloud.tencent.com
数据库的模式(Schema)是对现实世界的抽象,是对数据库中全部数据的逻辑结构和特征的描述。模式反映的是数据的结果及其联系,数据库系统在其内部具有三级模式和二级映像。三级模式分别是外模式、模式和内模式,二级映像则是外模式 / 模式映像、模式 / 内模式映像。
#### 三级模式
(1)模式
模式对应着概念级,它是由数据库设计者总和所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图。它是由数据库管理系统提供的数据模式描述语言(Date Description Language,DDL)来描述、定义的,体现并反映了数据库系统的整体观。
(2)外模式
外模式对应于用户级,它是某个或某几个用户看到的数据库的数据视图,是与某一应用有关的数据逻辑的表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(DML)对这些数据记录进行操作。
(3)内模式
内模式对应于物理级,它是数据库中全部数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上存储方式的物理结构,对应着实际存储在外存储介质上的数据库。
#### 二级映像
数据库系统的三级模式是对数据的 3 个抽象,它把数据的具体组织留给 DBMS 管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示和存储。为了能够在内部实现着 3 个抽象层次的练习和转换,DBMS 在这 3 个级别之间提供了两层映像:外模式 / 模式映像 和 模式 / 内模式映像。
外模式 / 模式映像 使数据具有较高的逻辑独立性。它定义了外模式和模式之间的对应关系。这些映像定义通常包含在各自外模式的描述。当模式改变时,DBA 要求相关的外模式 / 模式映像做相应的改变,以使外模式保持不变。应用程序是依据实际的外模式编写的,外模式不变应用程序就没必要修改。所以,外模式 / 模式映像 功能保证了数据与程序的逻辑独立性。
模式 / 内模式映像使数据具有较高的物理独立性。它定义了数据库全局逻辑结构与存储结构之间的对应关系。该映像定义通常包含在模式描述中。当数据库的存储结束了,DBA 要对模式 / 内模式映像做相应的改变,以使模式保持不变。模式不变,与模式没有直接联系的应用程序也不会改变。所以,模式 / 内模式映像功能保证了数据与程序的物理独立性。