约束
约束是数据库对数据合法性施加的规则,用来把结构边界和业务不变量下沉到数据库层。
#type / concept
#status / growing
#tech / dev / backend
#resource / database
#resource / sql
[!info] related notes
约束
一句话定义
约束是数据库用来限制哪些数据可以进入表、哪些状态被视为合法的规则。
核心机制 / 工作原理
常见约束包括:
NOT NULLUNIQUECHECKDEFAULTPRIMARY KEYFOREIGN KEY
它们的共同目标是:让错误数据尽量在写入阶段就被拦下,而不是等到业务出错后再补救。
最小例子 / 最小场景
CREATE TABLE users (
id BIGINT PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
这里主键、非空、唯一和默认值都属于约束体系的一部分。
边界与易混淆点
- 约束不是“语法更完整”的装饰,而是数据质量边界。
- 不是所有业务规则都能优雅表达为数据库约束,但能下沉的一般应该优先下沉。
- 主键和外键本身也属于约束,而不是独立于约束之外的另一套东西。