Visual LabINTERACTIVE LEARNING
01 · DATA MODELINGP012 MIN

主键、外键与唯一约束

让数据库直接保护身份、引用和唯一业务规则。

MENTAL MODELKEYS & CONSTRAINTS
01稳定主键
02外键引用
03组合唯一
04冲突反馈
应用校验给用户友好反馈,数据库约束给所有写入路径最后一道不可绕过的防线。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Primary Key

在表内稳定且唯一地标识一行,常用自增整数或 UUID。

02

Foreign Key

保证引用目标存在,并明确更新或删除时如何处理依赖行。

03

Unique Constraint

由数据库保证一列或多列组合不重复,例如 tenant_id + sku_code。

02 · BLIND BOTS CASE

不同租户能否使用相同 SKU 编码

问题现场

全局 unique(sku_code) 导致 Dealer B 无法使用 Dealer A 已用编码。

  1. 01

    确认编码只需组织内唯一。

  2. 02

    改为 unique(tenant_id, sku_code)。

  3. 03

    所有按编码查询同时带 tenant_id。

得到什么

满足各组织独立编码空间,也避免跨租户误读。

03 · PRACTICE

马上动手

  1. 为用户邮箱分别设计全局唯一与租户内唯一两种约束。
  2. 列出删除 Product 时 SKU 的三种策略。
04 · PITFALLS

常见坑

  • 把名称当主键
  • 只做前端唯一校验
  • 外键默认 CASCADE 导致业务数据连锁删除
05 · KNOWLEDGE CHECK为什么“查询不存在后再插入”仍可能重复?查看答案⌄
答案

两个并发事务都可能在对方提交前看到不存在;唯一约束把竞争收敛为一个成功和一个可处理的冲突。