【概述】
对于数据库系统的体系结构,其分为内部体系结构、外部体系结构两个角度
从数据库管理系统角度来看,通常采用外模式、模式、内模式三级模式结构,这是数据库系统的内体系结构,又被称为数据库系统的模式结构
从数据库最终用户角度来看,数据库系统结构分为单用户结构、主从式结构、分布式结构、客户-服务器结构、浏览器-应用服务器-数据库服务器多层结构等,这是数据库系统的外体系结构
本篇仅介绍数据库系统的内体系结构,关于数据库系统的外体系结构:点击这里
【模式的概念】
在数据模型中,有型和值的概念:
- 型(Type):对某一类数据的结构和属性的说明
- 值(Value):型的一个具体赋值
例如:在学生数据库中,学生记录定义为 (学号,姓名,性别,系别,年龄)
,这就是一个记录型,而对应的 (97001,张三,男,计算机,19)
是该记录型的一个记录值
对于模式,有如下概念:
- 模式(Schema):数据库中全体数据的逻辑结构和特征的描述,是型的描述,反映的是数据的结构及其联系,相对稳定
- 实例(Instance):模式的一个具体值,反映数据库某一时刻的状态,随数据库中的数据的更新而变动,同一个模式可以有很多实例
例如:在学生数据库模式中,包含学生记录、课程记录、学生选课记录,这是一个模式,而在 2018 年度学生数据库实例中,包含了 2018 年学校中所有学生的记录、学校开设的所有课程的记录、所有学生选课的记录,同时 2017 年度学生数据库模式对应的实例与 2018 年度学生数据库模式对应的实例是不同的
【三级模式结构】
概述
数据库系统的三级模式结构是指数据库系统由外模式、模式、内模式三级构成
简单来说,外模式是用户世界,模式是程序员世界,内模式是机器世界,对于某个学生课程数据库,三者的视角如下图
模式
模式(Schema)也称逻辑模式,是数据库中全体数据的逻辑结构与特征的描述,是所有用户的公共数据视图,综合了所有用户的需求
模式是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,也与具体的应用程序、开发工具、高级程序设计语言无关
模式实际上是数据库数据在逻辑上的视图,一个数据库只有一个模式,DBMS 提供模式数据定义语言(模式 DDL)来定义模式,在定义时,要考虑数据的逻辑结构(数据项名字、类型、取值范围等)、数据之间的联系、数据有关的安全性、完整性要求
外模式
外模式(External Schema)也称子模式、用户模式,其是数据库用户能够看见、使用的局部数据的逻辑结构与特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
外模式介于模式与应用之间,对于模式与外模式来说,一个模式可以对应多个外模式(一对多关系),是模式的子集,不同的外模式反映了不同用户的需求;对于外模式与应用来说,一个外模式可以对应多个应用(一对多关系),但一个应用只能使用一个外模式
外模式是保证数据库安全性的一个强有力的措施,每个用户只能访问对应外模式的数据,数据库中其他数据是不可见的,DBMS 提供外模式数据定义语言(外模式 DDL)来定义外模式
内模式
内模式(Internal Schema)也称存储模式,其是数据库中的数据物理结构和存储方式的描述
内模式是数据在数据库内部的表示方式,例如记录的存储方式、索引的组织方式、数据是否加密、数据是否压缩存储等,都是数据库的内模式
一个数据库只有一个内模式,对应着唯一一个模式
【二级映像】
概述
数据库系统的三级模式是对数据的三个抽象级别,其将数据的具体组织交由 DBMS 管理,是用户能够有逻辑地抽象地处理数据,不必关心计算机中数据的具体表示方式与存储方式,为能够在系统内部实现这三个抽象层次的联系和转换,DBMS 在这三级模式之间提供了两层映像(外模式/模式映像、模式/内模式映像),来保证数据库系统的数据独立性(逻辑独立性、物理独立性)
外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构
一个模式可以有任意个外模式,对于每一个外模式,都有一个外模式/模式映像,定义了该外模式与模式间的对应关系,这些映像通常包含在各自外模式的描述中
当模式改变时,数据库管理员修改有关的外模式/模式映像,使外模式不变,而应用程序是依据外模式编写的,这就使得应用程序不必修改,从而保证数据与程序的逻辑独立性
模式/内模式映像
模式描述的是数据的全局逻辑结构,内模式描述的是数据的物理结构
一个模式对应一个内模式,因此模式/内模式映像是唯一的,其定义了数据全局逻辑结构与存储结构间的对应关系,该映像包含在模式的描述中
当数据库的存储结构改变时,数据库管理员修改模式/内模式映像,使模式不变,加之外模式/模式映像,这就使得应用程序不必修改,从而保证数据与程序的物理独立性
【数据独立性】
数据库模式是数据库的中心与关键,它独立于数据库的其他层次,因此在设计数据库模式结构时,应该首先确定数据库的逻辑模式(模式)
内模式依赖于全局逻辑结构,独立于数据库的用户视图(外模式),也独立于具体的存储设备,其是将全局逻辑结构中定义的数据结构及其联系,依照一定的物理存储策略进行组织,以达到较好的时间与空间效率
外模式面向具体的应用程序,定义于逻辑模式之上,独立于存储模式(内模式)与存储设备,当应用需求发生较大变化,相应外模式不能满足其视图需求时,该外模式要做相应该多,因此在设计外模式时,要充分考虑应用的扩展性
二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求发生变化,否则应用程序一般不需要修改
数据与程序间的独立性使数据的定义与描述可以从应用程序中分离出去,此外,由于数据的存取由 DBMS 管理,简化了应用程序的编制,这大大减少了应用程序的维护与修改