数据独立性
概述
数据独立性是 Codd 在关系模型中提出的核心概念,指数据的逻辑表示与物理存储之间的彻底分离,分为物理数据独立性和逻辑数据独立性两个层面。
关键内容
物理数据独立性
修改数据的物理存储结构(存储格式、索引策略、磁盘分布方式)不应影响数据的逻辑组织方式,更不应要求修改应用程序。
示例:为某张表添加或删除索引、将表从一个磁盘迁移到另一个磁盘、改变记录的物理排列顺序——所有使用该表的应用程序都不需要做任何改动。
实现机制:概念模式与内模式之间的映射。当物理存储结构变化时,只需修改这个映射关系,概念模式保持不变。
逻辑数据独立性
即使数据的逻辑结构发生变化(添加新的列、拆分或合并表),现有的应用程序也应尽可能不受影响。
实现机制:视图(view)——通过关系运算从基本关系派生出的虚拟关系,不实际存储数据,在被查询时实时计算。当概念模式变化时,可以通过定义适当的视图来保持原有外部接口的稳定。
三级模式架构
数据独立性的两个层面共同构成了"三级模式架构"(Three-Schema Architecture):
| 层级 | 名称 | 描述 |
|---|---|---|
| 外模式 | 用户视图 | 不同用户看到的数据视图 |
| 概念模式 | 逻辑结构 | 数据库的整体逻辑结构 |
| 内模式 | 物理存储 | 数据在磁盘上的存储方式 |
每相邻两个层级之间的映射关系可以独立变化,从而实现了系统化的数据独立性保障。
深远影响
数据独立性是"关注点分离"(Separation of Concerns)原则在数据管理领域的具体体现,后来被广泛应用于软件工程的各个层面:API 设计、分层架构、微服务架构等。
来源
- raw/books/计算机科学/07-codd-relational-model.md