来自实战的ERD设计最佳实践
优秀的ERD让开发更轻松,糟糕的ERD则可能毁掉整个项目。以下是经过众多项目验证的10条ERD设计最佳实践。
1. 统一命名规范
项目启动前,团队需就表名和列名的命名规范达成一致:
- 表名:统一使用单数或复数(如统一用
user或users) - 列名:选择snake_case或camelCase之一
- 主键:统一为
id格式 - 外键:包含被引用表名(
user_id、product_id) - 日期列:
created_at、updated_at、deleted_at格式
2. 为每个表定义主键
没有主键的表会给数据操作带来极大困难。根据项目特点选择UUID或自增整数。
3. 默认添加created_at和updated_at
几乎所有表都应包含创建时间(created_at)和修改时间(updated_at)。
4. 多对多关系用中间表分离
N:M关系必须通过中间表(Junction Table)管理,中间表还可以存储关系本身的属性。
5. 明确定义外键约束
外键约束在数据库层面保证数据完整性。也要明确指定删除行为(CASCADE、RESTRICT等)。
6. 提前规划索引
在设计阶段规划索引比出现性能问题后再添加更高效。外键列和频繁查询的列都需要索引。
7. 合理选择数据类型
- 邮箱:
VARCHAR(255) - 金额:
DECIMAL(10, 2) - 日期时间:
TIMESTAMP WITH TIME ZONE - 布尔值:
BOOLEAN
8. 明确决定NULL的允许性
仔细决定每列是否允许NULL,不必要的NULL允许会使查询复杂化。
9. 避免循环引用
A表引用B表、B表又引用A表的循环引用会在数据插入/删除时产生问题。
10. 将ERD作为文档管理
ERD不是一次性的。系统变化时ERD也需要更新,与代码一起进行版本控制。
总结
优秀的ERD设计需要持续迭代和团队协作。把这10条原则作为检查清单,在每个新项目开始时加以运用。