数据库基础-数据库的三级模式
一、 数据库系统的三级模式结构
三级模式结构是数据库管理系统最经典的体系结构,它从不同层次(级别)对数据进行描述和定义,实现了数据的抽象。
| 层级 | 模式 | 别称 | 描述对象 | 核心作用与类比 | 
| 外部级(用户级) | 外模式 | 子模式、用户视图 | 用户或应用程序所看到的数据视图。是全局逻辑结构的一个子集。 | 面向用户:定义了特定用户能看到和操作的数据。一个数据库可以有多个外模式。 | 
| 概念级 | 模式 | 概念模式、逻辑模式 | 整个数据库的全局逻辑结构。由数据库设计者综合所有用户需求构造。 | 面向全局:描述所有数据的逻辑结构、实体间联系、完整性约束等。一个数据库只有一个模式。 | 
| 内部级(物理级) | 内模式 | 存储模式、物理模式 | 数据在物理存储设备上的存储方式。是数据最底层的描述。 | 面向系统:定义数据的物理存储结构、索引方式、存取路径等。一个数据库也只有一个内模式。 | 
总结:三级模式将数据的世界分成了三个层面。用户只关心自己的“菜单”(外模式),餐厅管理者关心“菜单体系”(模式),而厨师长关心“具体操作流程”(内模式)。这种分层使得各层各司其职,互不干扰。
二、 两级映像与数据独立性
三级模式之间不是孤立的,它们通过“映像”来建立联系。正是这两级映像,成就了数据库系统的核心优势——数据独立性。
1. 两级映像
映像是一种映射规则,它定义了相邻两级模式之间的对应关系和转换方式。
外模式/模式映像
- 位置:存在于外部级和概念级之间。
- 作用:定义了每个外模式与概念模式之间的对应关系。它说明了外模式中的数据项、记录等是如何与模式中的相应部分关联的。
- 数量:一个模式可以有多个外模式,因此存在多个外模式/模式映像。
模式/内模式映像
- 位置:存在于概念级和内部级之间。
- 作用:定义了全局逻辑结构(模式)与物理存储结构(内模式)之间的对应关系。它说明了逻辑记录和字段是如何在物理设备上存储的。
- 数量:一个模式和一个内模式之间,只有一个模式/内模式映像。
2. 数据独立性
数据独立性是指应用程序不依赖于数据库中数据的物理存储方式和全局逻辑结构。当数据库的某一层结构发生变化时,只要调整相应的映像,就可以使上层保持不变,从而无需修改应用程序。它分为两个层次:
逻辑独立性
- 定义:当概念模式发生改变时,可以通过修改外模式/模式映像,使得所有外模式保持不变。
- 实现机制:DBA(数据库管理员)修改模式(例如,增加新的表、增加新的字段、改变字段数据类型),同时调整外模式/模式映像,使得用户的外模式视图不受影响。
- 结果:由于应用程序是基于外模式编写的,因此应用程序无需任何修改。
- 核心思想:用户程序与全局逻辑结构解耦。全局逻辑变了,但用户的“视图”没变,程序自然不用改。
物理独立性
- 定义:当内模式发生改变时,可以通过修改模式/内模式映像,使得概念模式保持不变。
- 实现机制:DBA为了优化性能,修改内模式(例如,为某个字段建立索引、改变数据文件的组织方式、将数据从一个磁盘迁移到另一个更快的磁盘),同时调整模式/内模式映像,使得全局的逻辑结构不受影响。
- 结果:由于概念模式没变,所有基于它的外模式也自然不变,最终应用程序无需任何修改。
- 核心思想:用户程序与物理存储细节解耦。物理存储方式变了,但数据的逻辑意义没变,程序自然不用改。
总结:两级映像是实现数据独立性的技术保障。逻辑独立性让用户免受全局逻辑变化的影响,物理独立性让用户和系统都免受物理存储细节变化的影响,极大地增强了数据库系统的灵活性和可维护性。
三、 分布式数据库的透明性
分布式数据库系统的数据分布在网络的不同计算机(节点)上,其管理比集中式数据库更复杂。为了简化用户和应用程序的开发,系统提供了多种层次的透明性。透明性越高,用户需要关心的细节就越少,应用开发就越简单。
| 透明性层次 | 描述 | 用户需要关心什么? | 改变时的影响 | 
| 分片透明性 (最高级) | 用户只需对全局关系进行操作,完全不知道数据是如何被分片(水平分片、垂直分片)的。 | 什么都不用关心,就像操作一个单一的、集中的数据库一样。 | 当数据的分片方式改变时,应用程序完全不受影响。 | 
| 位置透明性 | 用户知道数据被分成了多个片段,但不知道每个片段具体存储在哪个网络节点上。 | 需要知道数据被分成了哪些逻辑片段,但不用关心它们在哪里。 | 当数据片段从一个节点移动到另一个节点时,应用程序不受影响。 | 
| 局部映像透明性 (最低级) | 用户知道数据被分片,也知道每个片段的位置,但不知道每个节点上使用的是哪种局部DBMS(如Oracle, MySQL)或数据模型。 | 需要知道数据分片情况和物理位置。 | 当某个节点的局部DBMS或数据存储格式改变时,应用程序不受影响。 | 
| 复制透明性 (补充) | 用户不关心数据是否有副本、有多少副本、副本存放在哪里。系统自动维护所有副本的一致性。 | 什么都不用关心,系统会自动选择最优的副本进行读取,并自动更新所有副本。 | 当增加或删除数据副本时,应用程序不受影响。 | 
总结:分布式数据库的透明性是一个“光谱”,从最高级的分片透明到最低级的局部映像透明。透明性越高,系统的复杂性就越多地由DBMS承担,用户的应用程序就越简单、越具有可移植性。
四、 数据库设计阶段及其主要任务
数据库设计是一个复杂、分阶段的过程,通常遵循“生命周期法”,主要包含以下六个阶段:
1. 需求分析阶段
- 任务:准确了解与分析用户需求(包括数据与处理)。这是整个设计过程的基础,也是最困难、最耗费时间的一步。
- 产出:数据流图、数据字典、需求规格说明书。
2. 概念结构设计阶段
- 任务:对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。这个阶段的目标是描述现实世界中的实体及其联系。
- 产出:E-R图(实体-联系图)。这是数据库设计的核心蓝图。
3. 逻辑结构设计阶段
- 任务:将概念结构设计阶段得到的E-R图,转换为选定的DBMS产品所支持的数据模型(如关系模型、网状模型、层次模型),并对其进行优化。
- 产出:数据库的逻辑模式(一组关系模式、表结构),以及外模式(视图)。
4. 物理结构设计阶段
- 任务:为逻辑数据模型选取一个最适合应用环境的物理结构,包括存储结构和存取方法。
- 产出:内模式的定义,如确定索引类型、文件组织方式、数据存放位置等。
5. 数据库实施阶段
- 任务:根据逻辑设计和物理设计的结果,使用DBMS提供的数据语言(如SQL)及其宿主语言,创建数据库、编写和调试应用程序,并组织数据入库。
- 产出:可运行的数据库系统和应用程序。
6. 数据库运行与维护阶段
- 任务:数据库应用系统正式投入运行后,需要不断地对其进行评价、调整与修改。这是一个长期的过程。
- 主要工作:性能监控与调优、数据库备份与恢复、数据完整性维护、安全管理等。
 总结:数据库设计是一个从现实世界抽象到信息世界(概念模型),再到机器世界(数据模型)的逐步求精的过程。每个阶段都有明确的任务和产出,确保最终构建的数据库能够准确、高效、安全地满足用户的需求。
