数据库三大数据模型:层次、网状、关系模型
一、层次模型(Hierarchical Model)
1. 结构特征
用树形结构组织数据,类似目录树。
- 节点:实体记录;连线:一对多联系;
- 一个父节点可以有多个子节点,一个子节点只能有一个父节点;
- 有且仅有一个根节点(顶层无父节点)。
2. 存储与访问
按树的层级顺序存储,查询必须从根节点自上而下遍历。
3. 优点
结构简单、层次清晰;查询路径固定,早期查询速度快。
4. 缺点
- 只能表达一对多,无法直接表示多对多;
- 多对多场景需要冗余复制记录,数据冗余大;
- 增删改复杂,子节点依赖父节点,修改层级成本高;
- 查找必须按固定路径,操作不灵活。
5. 代表系统
IBM IMS(最早商用数据库)
二、网状模型(Network Model)
1. 结构特征
用有向图(网络) 存储实体与联系,是层次模型的升级。
- 允许一个节点拥有多个父节点;
- 实体之间可直接建立多对多联系;
- 记录之间通过指针关联。
2. 优点
- 支持一对多、多对多,表达现实关系能力强;
- 相比层次模型冗余更少;
- 存取效率较高。
3. 缺点
- 结构极其复杂,关联指针繁多;
- 查询、更新必须手动处理指针,操作门槛高;
- 用户需要记忆数据存储路径,独立性差;
- 不利于开发、维护。
4. 代表系统
DBTG 系统
三、关系模型(Relational Model,当前主流)
由埃德加·科德E.F.Codd提出,现在所有MySQL、Oracle、SQL Server都基于该模型。
1. 结构特征
用二维表(关系) 统一描述实体和实体间联系。
- 一行 = 元组(记录);一列 = 属性(字段);
- 主键唯一标识一行,外键关联多张表实现多表联系;
- 不依靠指针,依靠逻辑值关联,完全屏蔽底层存储。
2. 三大完整性约束(核心)
- 实体完整性:主键非空、唯一;
- 参照完整性:外键取值匹配主表主键或为空;
- 用户自定义完整性:业务自定义约束。
3. 数据操作
统一使用关系代数 / SQL:选择、投影、连接、除运算等,面向集合操作,不用关心物理存储位置。
4. 优点
- 结构简单统一,全部是二维表,容易理解;
- 数据物理独立性高,用户不用关心存储路径;
- 支持一对一、一对多、多对多所有关系;
- 标准化SQL语言,易学、通用,开发便捷;
- 支持范式优化,可控冗余,减少更新异常。
5. 缺点
同等数据量下,查询速度略低于层次、网状(需要连接多张表),可通过索引优化弥补。
四、三者核心对比速记
| 模型 | 结构 | 联系表达 | 核心缺点 | 时代 |
|---|---|---|---|---|
| 层次模型 | 树形 | 仅一对多 | 多对多冗余、操作死板 | 第一代数据库 |
| 网状模型 | 图网络 | 一对多、多对多 | 结构复杂、指针难维护 | 第二代数据库 |
| 关系模型 | 二维表 | 全部关系均可表达 | 多表连接查询开销 | 第三代,目前主流 |
要点
- 层次模型:树形结构,一对多,代表IMS;
- 网状模型:有向图,允许多父节点,支持多对多,结构复杂;
- 关系模型:二维表格,使用SQL操作,依靠主键外键关联,数据独立性强,现代数据库标准。
注意:本文归作者所有,未经作者允许,不得转载