数据库的三级模式结构是数据库系统的核心架构,用于实现数据的逻辑独立性和物理独立性。
🏗️三级模式结构
1. 模式(Schema/逻辑模式)
- 定义:也称为概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 特点:
- 一个数据库只有一个模式
- 描述的是全局逻辑结构(有哪些表、表的结构、表之间的关系等)
- 与具体的应用程序无关,也与物理存储无关
- 例子(关系数据库):
-- 模式描述:-- 学生表(学号, 姓名, 年龄, 专业)-- 课程表(课程号, 课程名, 学分)-- 选课表(学号, 课程号, 成绩)-- 以及表之间的主外键关系
2. 外模式(External Schema/子模式)
- 定义:也称为用户模式,是数据库用户(应用程序或最终用户)能够看见和使用的局部数据的逻辑结构描述。
- 特点:
- 一个数据库可以有多个外模式
- 每个外模式都是模式的一个逻辑子集
- 为不同用户提供不同的数据视图,隐藏用户不需要的数据
- 例子:
-- 教务处的外模式可能看到:CREATEVIEW教务处视图ASSELECT学号,姓名,专业,课程名,成绩FROM学生,选课,课程WHERE学生.学号=选课.学号AND选课.课程号=课程.课程号;-- 财务处的外模式可能只看到:CREATEVIEW财务处视图ASSELECT学号,姓名,专业-- 看不到成绩信息FROM学生;
3. 内模式(Internal Schema/存储模式)
- 定义:也称为物理模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
- 特点:
- 一个数据库只有一个内模式
- 描述数据在存储介质上的存储方式
- 完全由数据库管理系统(DBMS)管理,用户通常不关心
- 例子:
- 数据文件如何组织(堆文件、顺序文件等)
- 索引采用什么结构(B+树、哈希索引等)
- 数据如何压缩、加密
- 数据在磁盘上的存储位置和分布
🔗三级模式的关系
应用程序1 应用程序2 应用程序3 | | | [外模式1] [外模式2] [外模式3] ← 用户视图层 \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ | / \ | / [ 模式 ] ← 全局逻辑层 | | [内模式] ← 物理存储层 | | 物理数据库🛡️两级映像与数据独立性
外模式/模式映像
- 作用:建立外模式与模式之间的对应关系
- 保证:逻辑数据独立性
- 效果:当模式改变时(如增加新字段、修改表结构),只需修改外模式/模式映像,使外模式保持不变,从而应用程序不需要修改
模式/内模式映像
- 作用:建立模式与内模式之间的对应关系
- 保证:物理数据独立性
- 效果:当内模式改变时(如更换存储设备、改变索引方式),只需修改模式/内模式映像,使模式保持不变,从而应用程序不受影响
📊现实世界类比
| 概念 | 类比 | 说明 |
|---|---|---|
| 内模式 | 图书馆的图书存储方式 | 图书如何摆放(按索书号顺序)、书架类型、仓库位置等物理细节 |
| 模式 | 图书馆的藏书目录系统 | 所有图书的分类体系、编目规则(书名、作者、出版社、ISBN等) |
| 外模式 | 不同类型的读者视图 | • 学生:只能借阅教学相关书籍 • 研究员:可借阅专业文献 • 儿童:只能看到少儿区图书 |
💡为什么需要三级模式?
- 数据安全性:通过外模式隐藏用户不应看到的数据
- 逻辑独立性:数据库逻辑结构变化不影响应用程序
- 物理独立性:物理存储结构变化不影响应用程序
- 数据共享:多个用户可以从不同角度使用同一数据
- 简化用户接口:用户只需关心自己的外模式,无需了解复杂的全局结构和存储细节
🎯总结记忆
- 内模式:物理层,关注“数据怎么存”
- 模式:逻辑层,关注“数据是什么”
- 外模式:视图层,关注“用户看什么”
这三层通过两级映像连接,形成了数据库系统的经典架构,是数据库能够提供高效、安全、灵活数据管理服务的基石。