三级模式结构与两级映像
- 什么是数据库的三级模式结构?
- 1. 模式(Conceptual Schema,概念模式)
- 定义
- 特点
- 作用
- 示例
- 2. 外模式(External Schema,外部模式)
- 定义
- 特点
- 作用
- 举例
- 3. 内模式(Internal Schema,内部模式)
- 定义
- 特点
- 作用
- 举例
- 三级模式结构的关系和映射
- 1. 外模式与模式的映射
- 外模式与模式的关系
- 映射机制
- 举例
- 电商系统中的用户视图与模式
- 权限控制:
- 映射的意义
- 2. 模式与内模式的映射
- 模式与内模式的关系
- 映射机制
- 举例
- 电商系统中的存储优化
- 映射逻辑:
- 映射的意义
- 3. 外模式与内模式的间接关系
- 总结:映射在三级模式结构中的作用
- 扩展:三级模式映射的类比
- 三级模式的作用总结
- 举例
- 假设我们有一个图书馆系统:
- 三级模式的优点
什么是数据库的三级模式结构?
三级模式结构是数据库系统架构的基础,用来管理和组织数据的视图和存储。它把数据库的整体结构划分为外模式、模式和内模式三个层次。
这种结构的目的是为了实现数据的抽象化管理,让用户不用关心复杂的底层存储方式,也可以根据不同需求灵活定义数据的呈现方式,同时保障数据的安全性和一致性。
数据库的三级模式结构就像一栋大楼:
- 外模式:用户看到的房间样子,每个人只能进到他有钥匙的房间。
- 模式(概念模式):大楼的总体设计图,包括房间布局、水电线路等。
- 内模式:大楼的建筑材料(钢筋、水泥)以及具体的施工方式。
1. 模式(Conceptual Schema,概念模式)
定义
- 模式是数据库的核心层,描述了整个数据库的逻辑结构。它定义了数据库中有哪些数据、数据之间的关系,以及如何保证数据的一致性和完整性。
特点
- 全局视图:描述的是数据库的整体结构,是所有用户和应用共享的。
- 逻辑层面:关注数据的逻辑组织方式,而不是物理存储方式。
- 保证一致性:它负责维护数据的完整性约束和一致性(如主键约束、外键约束等)。
作用
- 为数据库定义一个统一的数据结构。
- 屏蔽数据的存储细节,使得应用程序和用户不用关心数据是如何存储的。
- 确保当数据库底层存储方式(内模式)变化时,逻辑结构保持不变(物理数据独立性)。
示例
在一个电商系统中:
- 用户表:包含用户ID、姓名、邮箱等字段。
- 商品表:包含商品ID、名称、价格、库存等字段。
- 订单表:包含订单ID、用户ID、商品ID、下单时间等字段。
- 数据关系:订单表中的
用户ID
是用户表的外键,商品ID
是商品表的外键。
这些数据表和关系在概念模式中被定义。
2. 外模式(External Schema,外部模式)
定义
- 外模式是数据库的用户视图,为不同用户或应用程序提供不同的数据子集和访问方式。
特点
- 个性化视图:每个用户或应用程序可以有自己的数据视图,只能看到需要的数据,其他数据被屏蔽。
- 安全性:通过外模式控制用户的访问权限,保障数据安全。
- 多样性:允许不同用户同时访问数据库,而彼此的视图可以完全不同。
作用
- 让用户只看到他们需要的数据,屏蔽不必要的复杂性。
- 实现逻辑数据独立性:当概念模式(数据结构)变化时,用户视图可以保持不变。
举例
在一个电商系统中:
- 买家视图:只看到商品列表(商品名称、价格)和自己的订单信息。
- 卖家视图:可以看到商品库存、销售情况。
- 管理员视图:可以查看和修改所有数据。
比如:
买家只需要知道“我买了什么,花了多少钱”,而卖家需要知道“商品库存还剩多少”。这两个用户的需求不同,数据库通过外模式给他们提供了不同的数据视图。
3. 内模式(Internal Schema,内部模式)
定义
- 内模式描述了数据在数据库中的物理存储方式,包括存储结构、索引方式、文件组织等。
特点
- 与硬件相关:关注数据的底层物理存储,具体到硬盘上的存储文件、索引等。
- 存储优化:为了提升性能,内模式需要选择合适的数据结构(如B+树索引、哈希索引)和存储方式(如压缩、分区)。
- 不可见性:用户和应用程序无法直接接触到内模式。
作用
- 定义数据的存储方式和存取路径。
- 屏蔽硬件存储的细节,为上层提供统一的逻辑数据结构。
举例
在电商系统中:
- 用户表的实际存储可能是一个以用户ID为索引的B+树。
- 商品表的数据可能分区存储在不同的硬盘上。
- 日志数据可能存储在压缩文件中。
三级模式结构的关系和映射
在三级模式结构中,外模式、模式和内模式之间通过映射来建立联系。这些映射的作用是屏蔽层级之间的变化,实现数据的独立性和灵活性。
映射机制分为两种:
- 外模式与模式的映射:负责连接用户的视图(外模式)和数据库的逻辑结构(模式)。
- 模式与内模式的映射:负责连接逻辑结构(模式)和数据的物理存储(内模式)。
1. 外模式与模式的映射
外模式与模式的关系
- 外模式是从 模式中派生出来的,它是用户或应用程序需要的数据子集。
- 映射用来描述外模式和模式之间的数据对应关系。
- 它的作用是将用户的视图翻译为数据库的逻辑结构,并保证当模式发生变化时,外模式不受影响(逻辑数据独立性)。
映射机制
- 用户视图到模式的映射:
- 外模式的字段(列)如何对应到模式中的字段。
- 外模式可能只包含模式中的部分字段,甚至会对字段重命名或计算处理。
- 权限控制:
- 映射过程还会对用户的权限进行限制,比如用户无法看到某些敏感字段。
- 数据转换:
- 如果外模式中的字段与模式中的字段格式不同,映射会对数据进行转换(如单位换算、日期格式化等)。
举例
电商系统中的用户视图与模式
假设一个电商数据库的模式中定义了如下表结构:
- 用户表(User):
用户ID
、姓名
、邮箱
、密码
、手机号
、余额
。 - 商品表(Product):
商品ID
、名称
、库存
、价格
。
外模式的需求:
- 普通买家视图(外模式1):需要看到“用户姓名、邮箱、手机号、余额”。
- 管理员视图(外模式2):需要看到所有字段,包括用户密码。
映射逻辑:
- 外模式1:从
用户表
中筛选姓名
、邮箱
、手机号
、余额
四个字段。 - 外模式2:直接对
用户表
提供完整的字段视图。
权限控制:
- 普通买家不能访问“密码”字段,这就是通过外模式与模式的映射实现的权限屏蔽。
映射的意义
- 数据定制化:每个用户或应用只需要关心自己使用的数据。
- 屏蔽逻辑变化:当模式(比如新增了一个字段)发生变化时,通过调整映射,用户的视图可以保持不变。
- 数据安全:映射可以通过控制外模式来限制用户访问敏感数据。
2. 模式与内模式的映射
模式与内模式的关系
- 模式描述数据库的逻辑结构,如表结构、字段属性和数据关系。
- 内模式描述数据在存储设备上的组织方式,如文件结构、索引、分区方式等。
- 映射用来描述逻辑结构如何对应到物理存储结构。
- 它的作用是当存储方式发生变化时,不影响模式(概念模式),从而实现物理数据独立性。
映射机制
- 逻辑结构到存储结构的映射:
- 模式中的表、字段如何对应到物理存储的文件、块。
- 存储优化:
- 映射过程会选择最佳的存储方式(如索引、压缩)。
- 数据存取路径:
- 定义如何通过索引、哈希等方式快速检索数据。
举例
电商系统中的存储优化
假设电商数据库的模式定义了如下逻辑表结构:
- 商品表(Product):
商品ID
、名称
、库存
、价格
。
在内模式中,该逻辑表可能以不同方式存储:
- 对于频繁查询商品价格的场景:
- 内模式中使用B+树索引按价格排序存储,以加快检索速度。
- 对于库存数据非常大的商品表:
- 内模式中将商品表按照库存进行分区,低库存商品存储在SSD上,高库存商品存储在机械硬盘上。
- 如果需要减少存储占用:
- 内模式中使用压缩存储库存字段。
映射逻辑:
- 商品表的逻辑结构与存储结构之间的映射定义了:
- 哪个字段作为主键存储。
- 索引的类型和范围。
- 存储文件的组织方式(如分区)。
映射的意义
- 存储优化:根据数据访问特点,选择最优的存储结构。
- 屏蔽存储细节:即使底层的存储方式发生变化(比如从B+树改成哈希索引),概念模式和外模式都不需要改变。
- 提高性能:通过索引、分区等优化存取路径,加快数据访问速度。
3. 外模式与内模式的间接关系
由于外模式和内模式之间没有直接的映射关系,它们的联系必须通过模式(概念模式)来建立:
- 外模式定义了用户对数据的需求。
- 模式(概念模式)充当中介,把外模式的需求翻译成具体的逻辑结构。
- 内模式负责根据逻辑结构组织数据的存储。
这个分层的设计非常重要:
- 外模式与内模式隔离:用户不需要关心数据的存储细节,只需通过外模式操作逻辑结构。
- 统一管理:概念模式统一管理数据库的逻辑结构和数据关系,保障数据的一致性。
总结:映射在三级模式结构中的作用
映射类型 | 作用 | 实现的数据独立性 |
---|---|---|
外模式与模式的映射 | 将用户的视图映射到概念模式,控制用户能访问的数据子集。 | 逻辑数据独立性 |
模式与内模式的映射 | 将概念模式映射到物理存储结构,优化数据存储方式和访问路径。 | 物理数据独立性 |
扩展:三级模式映射的类比
我们可以把三级模式映射比喻成一个大图书馆的管理流程:
- 外模式与模式的映射:
用户(比如学生、老师)只想借某些类型的书籍(比如小说、教科书),而图书管理员根据用户需求(外模式)从图书馆系统(模式)里筛选出对应的书籍。 - 模式与内模式的映射:
图书馆里有很多书架,书的摆放方式可能按照类别、作者姓名或编号排列。管理员只关心书架编号(内模式),不需要重新设计书的逻辑分类(模式)。
三级模式的作用总结
层次 | 作用 | 面向对象 |
---|---|---|
外模式 | 提供个性化视图,保障数据安全性,屏蔽数据库逻辑和存储的复杂性 | 用户和应用程序 |
模式 | 统一数据库逻辑结构,确保数据的一致性,屏蔽存储的物理细节 | 数据库的全局逻辑视图 |
内模式 | 定义数据的物理存储方式,优化存储和访问性能,屏蔽硬件和存储细节 | 数据存储(硬件相关) |
举例
假设我们有一个图书馆系统:
- 模式:图书馆的管理系统描述了所有书籍的信息(如书名、作者、ISBN号)、借阅记录、书籍的分类关系。
- 外模式:
- 普通读者视图:只能看到有哪些书,可以借哪些书。
- 管理员视图:可以查看书籍的库存、借阅情况,还能新增或删除书籍。
- 内模式:书籍信息在数据库中以何种方式存储,比如使用B+树索引存储书名,ISBN号为主键,借阅记录分区存储等。
三级模式的优点
- 逻辑独立性:用户的视图不会因为数据结构的变化而改变。
- 物理独立性:数据的存储方式可以改变,不影响上层逻辑。
- 安全性:不同用户可以定义不同视图,保障数据访问安全。
- 灵活性:多用户、多应用同时访问时,能够提供不同的外模式视图。