SQL 设计规范
# SQL 设计规范
# 1. 表与库命名
- 命名风格:统一使用下划线小写风格,如
user_account、order_item - 语义清晰:表名表达业务含义,避免缩写不明的拼音或英文缩写
- 库名与业务域对应:数据库名体现业务域,如
user_center、content_service
# 2. 字段命名与类型
- 字段命名:统一使用下划线小写风格,如
user_id、created_at - 时间字段:建议统一采用
*_time或*_at结尾,如created_at、updated_at - 主键字段:优先使用自增或雪花等无业务含义的主键,如
id或<业务>_id - 布尔语义字段:使用数值或固定枚举,避免直接使用
true或false字面值
# 3. 字段注释规范
- 注释风格:直接描述字段含义,不写「关联某表」「代表存在」等描述
- 可选项表达:有确定枚举时用括号
()包裹,用|分隔,单项用数值:含义声明 - 标准格式:
字段说明(0:选项一|1:选项二|2:选项三)
-- 推荐写法
`status` char(1) DEFAULT '0' COMMENT '帐号状态(0:正常|1:停用)',
`del_flag` int(1) DEFAULT '0' COMMENT '删除标志(0:存在|1:删除)',
`sex` char(1) DEFAULT '0' COMMENT '用户性别(0:男|1:女|2:未知)',
-- 避免写法
COMMENT '帐号状态(0正常 1停用)',
COMMENT '删除标志(0代表存在 1代表删除)',
COMMENT '用户ID,关联yt_answer_user.user_id',
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 4. 主键与索引设计
- 主键设计:保证全局唯一性与无业务含义,避免业务字段直接作为主键
- 索引命名:使用
idx_表名_字段名或uk_表名_字段名形式 - 组合索引:按照查询条件的过滤顺序设置字段顺序,避免无效组合
- 冗余索引控制:定期检查删除完全重复或前缀重复的冗余索引
# 5. 约束与一致性
- 非空约束:对必填业务字段设置
NOT NULL并给出合理默认值 - 唯一约束:业务上需要唯一性的字段通过唯一索引或唯一约束保证一致性
- 外键约束:根据系统实际情况评估是否使用数据库外键,对高并发业务可通过应用侧保证关联一致性
# 6. 规范小结
| 场景 | 约定 |
|---|---|
| 表命名 | 使用下划线小写风格,语义清晰 |
| 字段命名 | 统一小写加下划线,时间与主键有统一后缀与前缀 |
| 字段注释 | 直接描述业务含义,可选项用 (0:xx\|1:xx) 风格 |
| 主键与索引 | 主键无业务含义,索引命名规范,组合索引按查询设计 |
| 约束设计 | 利用非空、唯一等约束保证数据一致性 |