01 · DATA MODELINGP012 MIN
主键、外键与唯一约束
让数据库直接保护身份、引用和唯一业务规则。
MENTAL MODELKEYS & CONSTRAINTS
01稳定主键
→02外键引用
→03组合唯一
→04冲突反馈
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Primary Key
在表内稳定且唯一地标识一行,常用自增整数或 UUID。
Foreign Key
保证引用目标存在,并明确更新或删除时如何处理依赖行。
Unique Constraint
由数据库保证一列或多列组合不重复,例如 tenant_id + sku_code。
不同租户能否使用相同 SKU 编码
全局 unique(sku_code) 导致 Dealer B 无法使用 Dealer A 已用编码。
- 01
确认编码只需组织内唯一。
- 02
改为 unique(tenant_id, sku_code)。
- 03
所有按编码查询同时带 tenant_id。
满足各组织独立编码空间,也避免跨租户误读。
马上动手
- 为用户邮箱分别设计全局唯一与租户内唯一两种约束。
- 列出删除 Product 时 SKU 的三种策略。
常见坑
- 把名称当主键
- 只做前端唯一校验
- 外键默认 CASCADE 导致业务数据连锁删除
05 · KNOWLEDGE CHECK为什么“查询不存在后再插入”仍可能重复?查看答案⌄
答案
两个并发事务都可能在对方提交前看到不存在;唯一约束把竞争收敛为一个成功和一个可处理的冲突。