数据库表间哪些复杂关系可称为多对多、一对多、多对一等关联?
- 内容介绍
- 文章标签
- 相关推荐
在实际项目中。往往会碰到以下痛点:
- 不清楚该为两张表选择哪种关联方式,导致模型设计混乱。
- 多表查询语句写得晦涩,执行效率低下。
- 外键约束和关联表的维护成本高,删除或更新数据时经常出现“孤儿记录”。其实,
- 面对复杂的 N:N 场景。不知道如何通过中间表来保持数据完整性。
下面对数据库中最常用的四种表间关系进行程序化梳理。并针对上述痛点提供实战要点,让你在设计阶段就能规避常见陷阱。
一、关系类型一览
- 一对一
- 一对多
- 多对一
- 多对多
二、一对一
定义与典型业务场景
每条记录在 A 表只能对应 B 表中的唯一记录,反之亦然。常用于把“大字段”或“安全敏感信息”拆分到独立表,以降低主表的访问频率或提高数据安全性。
实现方式
- 共享主键:A 表的主键同时作为 B 表的主键并设为外键。
- 唯一外键:A 表持有 B 表的外键,并在该列上添加唯一约束。
痛点 & 方法
- 痛点:忘记在外键上加唯一索引,导致出现意外的“一对多”。
-
方法:使用 DDL 时明确声明
UNIQUE/PIMARY KEY,并在代码审查中检查约束定义。
在实际项目中。往往会碰到以下痛点:
- 不清楚该为两张表选择哪种关联方式,导致模型设计混乱。
- 多表查询语句写得晦涩,执行效率低下。
- 外键约束和关联表的维护成本高,删除或更新数据时经常出现“孤儿记录”。其实,
- 面对复杂的 N:N 场景。不知道如何通过中间表来保持数据完整性。
下面对数据库中最常用的四种表间关系进行程序化梳理。并针对上述痛点提供实战要点,让你在设计阶段就能规避常见陷阱。
一、关系类型一览
- 一对一
- 一对多
- 多对一
- 多对多
二、一对一
定义与典型业务场景
每条记录在 A 表只能对应 B 表中的唯一记录,反之亦然。常用于把“大字段”或“安全敏感信息”拆分到独立表,以降低主表的访问频率或提高数据安全性。
实现方式
- 共享主键:A 表的主键同时作为 B 表的主键并设为外键。
- 唯一外键:A 表持有 B 表的外键,并在该列上添加唯一约束。
痛点 & 方法
- 痛点:忘记在外键上加唯一索引,导致出现意外的“一对多”。
-
方法:使用 DDL 时明确声明
UNIQUE/PIMARY KEY,并在代码审查中检查约束定义。

