数据库模式三级模式两级映像
数据库模式——三级模式两级映像
数据库系统是数据密集型应用的核心,其体系结构受数据库运行所在的计算机系统的影响很大。从数据库管理库管理系统的角度看,数据库系统体系结构一般采用三级模式结构。
实际上,数据库的产品很多,它们支持不同的数据模式,使用不同的数据库语言,建立在不同的操作系统上。数据的存储结构也各不相同,但体系结构基本上都具有相同的特征,采用“三级模式和两级映像”。
计算机模式结构有三种,分别为: 、模式和内模式 ,其中 一般也被称为用户子模式。
一、 (External Schema)/用户子模式(Subschema)
定义:也称用户子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
理解:
① 一个数据库可以有多个外模式;
② 外模式就是用户视图;
③ 外模式是保证数据安全性的一个有力措施。
二、模式(Schema)
定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
理解:
① 一个数据库只有一个模式;
② 是数据库数据在逻辑级上的视图;
③ 数据库模式以某一种数据模型为基础;
④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。
三、内模式(Internal Schema)
定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。
理解:
① 一个数据库只有一个内模式;
② 一个表可能由多个文件组成,如:数据文件、索引文件。 它是数据库管理系统(DBMS)对数据库中数据进行有效组织和管理的方法 其目的有:
① 为了减少数据冗余,实现数据共享;
② 为了提高存取效率,改善性能。
数据库系统采用 三级模式结构 ,这是数据库管理系统 内部的系统结构 。
数据库系统设计员可在 视图层、逻辑层 和 物理层 对数据抽象,通过 外模式、概念模式 和 内模式 来描述不同层次上的数据特性。
1.概念模式
概念模式也称模式,是数据库中全部数据的逻辑结构和特征的描述 ,它由 若干个概念记录类型 组成,只涉及 行的描述 , 不涉及具体的值 。概念模式的一个具体值称为模式的一个实例, 同一个模式可以有很多实例 。
概念模式反映的是数据库的结构及其联系 ,所以是相对 稳定 的;而 实例反映 的是数据库 某一时刻的状态 ,所以是相对 变动 的。
需要说明的是,概念模式不仅要描述概念记录类型,还要描述记录间的 联系、操作、数据的完整性和安全性 等要求。但是,概念模式不涉及 存储结构、访问技术 等细节。只有这样,概念模式才算做到了“ 物理数据独立性 ”。
描述概念模式的数据定义语言称为“ 模式DDL ”
2.外模式
外模式 也称 用户模式 或 子模式 ,是用户与数据库系统的接口,是 用户用到的那部分数据的描述 。它由 若干个外部记录类型 组成。用户使用 数据操纵语言 对数据库进行 操作 ,实际上是对 外模式 的 外部记录 进行操作。
描述外模式的数据定义语言称为“ 外模式DDL ”。有了外模式后,程序员不必关心概念模式,只与外模式发生联系,按外模式的结构存储和操作数据。
3.内模式
内模式 也称为 存储模式 ,是 数据物理结构和存储方式的描述 ,是 数据在数据库内部的表示方式 。需要定义所以的 内部记录类型、索引和文件的组织方式 ,以及 数据控制方面 的细节。
例如, 记录的存储方式是顺序存储、B树结构存储还是Hash方法存储 ; 索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定 。
需要说明的是, 内部记录并不涉及物理记录 ,也不涉及 设备的约束 。比 内模式更接近于物理存储和访问的那些软件机制是操作系统的一部分(即文件系统) 。例如, 从磁盘上读、写数据 。
描述 内模式的数据定义语言 称为“ 内模式DDL ”。
总之, 数据按外模式的描述 提供给用户;按 内模式的描述存储在磁盘 上;而 概念模式提供了连接这两级模式的相对稳定的中间层 ,并使得 两级中任意一级的改变都不受另一级的牵制 。
三级模式两级映像
数据库系统在 三级模式之间提供了两级映像 : 模式/内模式的映像、外模式/模式的映像。这两级映射保证了数据库中的数据具有较高的物理独立性和逻辑独立性 。
• 模式/内模式的映像 :实现 概念模式到内模式之间的相互转换 。
• 外模式/模式的映像 :实现 外模式到概念模式之间的相互转换 。
数据的独立性 是指 数据 与 程序独立 ,将 数据的定义从程序中分离 出去,由 DBMS负责数据的存储 ,从而简化应用程序,大大 减少应用程序编制 的工作量。 数据的独立性 是由 DBMS的二级映像功能来保证 的。 数据的独立性包括数据的物理独立性 和 数据的逻辑独立性 。
数据的物理独立性 是指当 数据库的内模式发生改变 时, 数据的的逻辑结构不变 。由于 应用程序处理的只是数据的逻辑结构 ,这样 物理独立性可以保证 ,当 数据的物理结构改变 了, 应用程序不用改变 。但是,为了保证 应用程序能够正确执行 ,需要 修改概念模式/内模式之间的映像 。
数据的逻辑独立性 是指用户的 应用程序 与 数据库结构 是 相互独立 的。 数据的逻辑结构 发生 变化 后, 用户程序也可以不修改。 但是,为了 保证应用程序能够正确执行 ,需要 修改外模式/概念模式之间的映像 。
基本术语:
1、数据库管理员(DBA)
数据库系统的三级模式结构
在一个组织的数据库系统中,有着各种不同类型的人员(或用户)需要与数据库打交道。他们从不同的角度以各自的观点来看待数据库,从而形成了数据库系统不同的视图结构。因此,考察数据库系统的结构可以有多种不同的层次或不同的视角。
若从DBA的视角上来看,数据库系统可分为内部系统结构和外部系统结构,其中内部系统结构通常采用三级模式结构,而外部体系结构通常表现为集中式结构、分布式结构和并行结构等;
若从数据库应用的用户(如应用程序的编写人员)的角度来看,目前数据库系统通常具有客户/服务器结构和浏览器/服务器结构,这也是数据库系统整体的运行与应用结构。
从DBA的角度来审视数据库系统,其内部基本上遵循三级体系结构:·用户级、概念级和物理级。
各种不同的数据库管理系统产品在体系结构上通常具有相同的特征,即采用三级模式结构,并提供两层映射功能。
具体来说,三级模式是指数据库系统是由概念模式(Schema)、外模式(External Schema)和内模式(Internal Schema)三级构成的,如下图所示:
一、概念模式:
概念模式也简称模式或称为逻辑模式,它是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
概念模式实际上是数据库数据在逻辑级上的视图,即概念视图,它的形式要比数据的物理存储方式抽象。DBA必须考虑整个数据库的这种全局概念视图,它不包含任何数据库的实现细节,例如是哪一种DBMS、文件组织、存取方法以及设备特征等,而是定义数据的逻辑结构、数据之间的联系,以及与数据相关的安全性、完整性等要求。
数据库按外模式的描述向用户提供数据,按内模式的描述存储数据,而概念模式是这两者的中间层,它既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及程序涉及语言无关,同时一个数据库只有一个概念模式,且相对稳定。
二、外模式
外模式也叫子模式(Subschema)或用户模式,它是数据库用户(包括应用程序和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。
外模式实际上是用于满足不同数据库用户需求的数据视图,即用户视图,其通常是模式的子集,是对数据库整体数据结构的局部重构。如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述就不相同,并且模式中同样的数据,在外模式中的结构、类型、长度、保密级别等都可以不同。
一个数据库可以有多个不同的外模式(如图所示),允许它们有一定的重叠,且一个外模式可以只为一个应用程序使用,也可以为多个应用程序所共享。
举例来说:
在一个学校的管理信息系统中,教务处子系统用户只能看到教师的授课信息、学生的选课及成绩信息,人事处子系统用户只能看到教师的基本资料信息,学工处子系统用户只能看到学生的基本资料管理信息,而学校管理信息系统的数据库则存储的是这些信息数据的总集合。
因此,外模式是保证数据库安全的重要措施,每个用户只能看见和访问所对应的外模式中的数据,而数据库中其余数据是不可见的。同时,外模式简化了数据库系统的用户接口,便于用户使用,并有效支持了数据的独立性和共享性。
相应地,DBMS提供子模式描述语言(Subschema DDL)来严格地定义子模式。
三、内模式
在三级模式结构中,内模式也叫存储模式(Storage Schema),它是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示形式。
内模式实际上是整个数据库的最底层表示,它不同于物理层,是DBA所见到的,特定的DBMS所处理的数据库的内部结构,即内部视图或存储视图。
如上图所示,有一个数据库只有一个内模式,它不是存储设备上的物理记录或物理块,也不涉及任何具体设备限制,例如柱面或磁道的大小等,也就是说,内模式还不是最底层的物理层,比内模式更接近于物理存储和访问的哪些软件机制是操作系统的一部分,比如从磁盘上对数据进行读、写操作。
DBMS提供内模式描述语言(内模式DDL或者存储模式DDL)来严格定义内模式,即定义所有内部记录类型、索引和文件的组织方式,以及所有数据控制方面的细节,例如,记录的存储方式是按照顺序结构存储还是按照B树结构存储,数据是否压缩、是否加密等。
两层映射功能与数据独立性
简要来说,构成数据库系统三级模式结构的三个模式分别是对数据的三级抽象,它们彼此间具有如下一些特点。
一个数据库的整体逻辑结构和特征的描述(概念模式)是独立于数据库其他层次结构(内/外模式)的描述,它是数据库的核心,也是数据库设计的关键。
一个数据库的内部存储模式依赖于概念模式,但存储模式独立于外部模式,也独立于具体的存储设备。
用户逻辑结构(外模式)是在全局逻辑结构描述的基础上定义的,它面向具体的应用程序,独立于内部模式和存储设备。
特定的应用程序是在外模式的逻辑结构上编写的,它依赖于特定的外模式,与数据库的模式和存储结构独立。
因此,用户可不必考虑数据的物理存储细节,而把数据的具体组织留给DBMS负责管理,同时为了有效支撑数据的三级抽象以及它们相互间的联系和转换,DBMS通过在内部提供三级模式之间的两层映射来实现,即外模式/概念模式映射与概念模式/内模式映射
1)外模式/概念模式映射
所谓映射,就是一种对应规则,它指出映射双方是如何进行转换的。外模式/概念模式映射定义了各个外模式与概念模式之间的映射关系,这些映射定义通常在各自的外模式中加以描述。由于一个概念模式可以有任意多个外模式,因此对于每一个外模式,数据库系统都会有一个外模式/概念模式映射。
数据库系统的概念模式如果发生改变,比如增加新的属性、新的关系、改变数据类型等,DBA通常会对各个外模式/概念模式的映射做出相应的改变,使那些对用户可见的外模式保持不变,从而应用程序的编程人员就不必取修改那些依据数据的外模式所编写的应用程序,实现了外模式不受概念模式变化的影响,保证了数据与程序的逻辑独立性。
2)概念模式/内模式映射
概念模式/内模式映射定义了数据库全局逻辑结构与物理存储之间的对应关系,这种映射定义通常是在模式中加以描述的。由于数据库中只有一个概念模式,且也只有一个内模式,所以概念模式/内模式映射是唯一的。
数据库系统的物理存储如若发生改变,例如选用另外一种存储结构或更换另外一个存储位置,DBA通常也会对概念模式/内模式映射做出相应调整,以使数据库系统的模式保持不变,从而也不必去修改应用程序,如此实现了概念模式不受内模式变化的影响,保证了数据与程序的物理独立性。
由此可见,正是这两层映射保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性,使得数据的定义和描述可以从应用程序中分离出去,从而简化了数据库应用程序的开发,也减少了维护应用程序的工作量。
参考: