数据库中三类表分别是什么类型?
- 内容介绍
- 文章标签
- 相关推荐
说到概述,数据库中到底存在哪三类表?
在实际项目里你是否常常因为不清楚不同表的特性而导致性能瓶颈、数据冗余或维护困难?怎么说呢,这篇文章把数据库中最常见的三大表类型——关系表、文档表和键值表——梳理清楚。并针对每种类型的痛点提供实用的选型建议,方便你定位合适的存储方案。说起来,
1. 关系表
主要特性
- 结构化:数据以二维矩阵形式组织。行代表记录,列定义字段及其数据类型。
- 强关联:通过外键可以在不同表之间建立严格的数据关系,实现完整性约束。
- SQL 支持:几乎所有主流 RDBMS 都提供成熟的 SQL 查询语言,支持复杂联结、事务和聚合。
常见子类
- 基本表:存储业务实体的持久化数据,是最常用的关系型结构。话说回来,
- 视图表:基于一个或多个基本表的查询结果创建的虚拟表。用于简化复杂查询、隐藏实现细节。
- 临时表:会话或事务期间临时创建。用来保存中间结果,生命周期短,能够明显提高大批量数据处理的性能。
- 关联/中间表:用于实现多对多关系,例如订单与商品之间的映射。
典型痛点 & 方法
- Pain: 大量 JOIN 导致查询慢。Solve: 使用索引、分区或将热点关联抽取到关联表/中间表 并进行预聚合。
- Pain: 业务模型频繁变更导致 schema 重构成本高。Solve: 采用视图层 + 迁移脚本 进行平滑演进,避免直接修改业务层代码。
- Pain: 临时计算结果占用基本表资源。Solve: 使用临时表或物化视图 将计算过程隔离,提高并发度。
2. 文档表 – NoSQL 文档型数据库中的“行”
- BSON/JSON 存储:A JSON 或类似结构作为单元,每条记录自带键值对集合。
- 灵活模式:NoSQL 的“弱模式”允许同一集合内文档结构不一致,便于快速迭代。
- 可直接在文档内部保存子对象和数组,无需额外关联表。
-
*Pain*的观点是,难以保证数据一致性;*Solve*: 使用事务支持或业务层补偿机制。
- *Pain*这方面,查询跨文档字段时性能下降;*Solve*: 为热点字段建立索引,并利用聚合管道进行预过滤。
- *Pain*这方面,数据迁移与备份复杂;*Solve*: 利用数据库自带的导出/导入工具或云服务快照功能,实现增量备份。
适用场景 - CMS程序 - 日志、审计记录 - 社交媒体动态 - 需要频繁变更字段结构但又不想频繁迁移 schema 的业务场景
说到概述,数据库中到底存在哪三类表?
在实际项目里你是否常常因为不清楚不同表的特性而导致性能瓶颈、数据冗余或维护困难?怎么说呢,这篇文章把数据库中最常见的三大表类型——关系表、文档表和键值表——梳理清楚。并针对每种类型的痛点提供实用的选型建议,方便你定位合适的存储方案。说起来,
1. 关系表
主要特性
- 结构化:数据以二维矩阵形式组织。行代表记录,列定义字段及其数据类型。
- 强关联:通过外键可以在不同表之间建立严格的数据关系,实现完整性约束。
- SQL 支持:几乎所有主流 RDBMS 都提供成熟的 SQL 查询语言,支持复杂联结、事务和聚合。
常见子类
- 基本表:存储业务实体的持久化数据,是最常用的关系型结构。话说回来,
- 视图表:基于一个或多个基本表的查询结果创建的虚拟表。用于简化复杂查询、隐藏实现细节。
- 临时表:会话或事务期间临时创建。用来保存中间结果,生命周期短,能够明显提高大批量数据处理的性能。
- 关联/中间表:用于实现多对多关系,例如订单与商品之间的映射。
典型痛点 & 方法
- Pain: 大量 JOIN 导致查询慢。Solve: 使用索引、分区或将热点关联抽取到关联表/中间表 并进行预聚合。
- Pain: 业务模型频繁变更导致 schema 重构成本高。Solve: 采用视图层 + 迁移脚本 进行平滑演进,避免直接修改业务层代码。
- Pain: 临时计算结果占用基本表资源。Solve: 使用临时表或物化视图 将计算过程隔离,提高并发度。
2. 文档表 – NoSQL 文档型数据库中的“行”
- BSON/JSON 存储:A JSON 或类似结构作为单元,每条记录自带键值对集合。
- 灵活模式:NoSQL 的“弱模式”允许同一集合内文档结构不一致,便于快速迭代。
- 可直接在文档内部保存子对象和数组,无需额外关联表。
-
*Pain*的观点是,难以保证数据一致性;*Solve*: 使用事务支持或业务层补偿机制。
- *Pain*这方面,查询跨文档字段时性能下降;*Solve*: 为热点字段建立索引,并利用聚合管道进行预过滤。
- *Pain*这方面,数据迁移与备份复杂;*Solve*: 利用数据库自带的导出/导入工具或云服务快照功能,实现增量备份。
适用场景 - CMS程序 - 日志、审计记录 - 社交媒体动态 - 需要频繁变更字段结构但又不想频繁迁移 schema 的业务场景

