命名规范
TIP
规定数据库中表、字段、索引、约束等的命名方式,适用于 MySQL 8.4 数据库。
设计原则
| 原则 | 说明 |
|---|---|
| 见名知意 | 名称应准确表达用途,避免 data、temp、col1 等模糊命名 |
| 风格统一 | 全库使用 snake_case,禁止混用驼峰 |
| 简洁适度 | 名称尽量简短但不失语义,建议不超过 30 字符 |
| 前缀规范 | 业务表统一使用 sys_ 前缀,日志表使用 sys_log_ 前缀 |
| 禁止拼音 | 不使用拼音或拼音缩写 |
命名风格速查
| 类型 | 风格 | 示例 |
|---|---|---|
| 表名 | snake_case + sys_ 前缀 | sys_user、sys_dept、sys_role_menu |
| 字段名 | snake_case | user_name、create_time、del_flag |
| 主键 | id | id |
| 外键 | 关联表_id | dept_id、role_id、user_id |
| 索引 | idx_字段名 或 uk_字段名 | idx_user_name、uk_account |
| 视图 | v_ 前缀 | v_user_info |
表命名
业务表
格式:sys_ + 业务域英文名词(复数/单数视情况)
text
✅ sys_user # 用户表
✅ sys_dept # 部门表
✅ sys_role # 角色表
✅ sys_menu # 菜单表
✅ sys_dict # 字典表
✅ sys_post # 岗位表
✅ sys_job # 定时任务表
❌ user # 缺少 sys_ 前缀
❌ Sys_User # 使用 PascalCase
❌ sysUser # 使用 camelCase
❌ t_user # 使用 t_ 前缀(非本项目规范)关联表
格式:sys_ + 主表 + 从表(多对多关系)
text
✅ sys_user_role # 用户-角色关联表
✅ sys_user_post # 用户-岗位关联表
✅ sys_role_menu # 角色-菜单关联表
✅ sys_post_role # 岗位-角色关联表
❌ user_role # 缺少 sys_ 前缀
❌ sysUserRole # 使用 PascalCase日志表
格式:sys_log_ + 日志类型
text
✅ sys_log_login # 登录日志表
✅ sys_log_operation # 操作日志表
✅ sys_system_log # 系统日志表
❌ log_login # 缺少 sys_ 前缀
❌ sys_log_login_log # 重复 log扩展字段表
格式:sys_ + 业务名 + 后缀
text
✅ sys_biz_conf # 业务配置表
✅ sys_app_conf # 应用配置表
✅ sys_attachment # 附件表
✅ sys_message # 消息表
✅ sys_event # 事件表
✅ sys_division # 行政区划表
✅ sys_language # 语言配置表字段命名
通用字段(所有表必备)
| 字段 | 类型 | 说明 |
|---|---|---|
id | BIGINT | 主键,自增 |
create_by | VARCHAR(64) | 创建人 |
create_time | DATETIME | 创建时间 |
last_update_by | VARCHAR(64) | 最后更新人 |
last_update_time | DATETIME | 最后更新时间 |
del_flag | INT | 删除标记(0=正常,1=删除) |
status | INT | 状态(0=启用,1=禁用) |
version | INT | 乐观锁版本号 |
业务字段
格式:snake_case,业务语义清晰
text
✅ user_name # 用户名
✅ account # 账号
✅ dept_id # 部门 ID
✅ mobile # 手机号
✅ email # 邮箱
✅ birth_date # 出生日期
✅ post_level # 岗位级别
❌ userName # 使用 camelCase
❌ UserName # 使用 PascalCase
❌ un # 缩写不清晰
❌ field1 # 无意义命名状态/标志字段
格式:业务含义 + _flag / _status / _type
text
✅ del_flag # 删除标记
✅ status # 状态
✅ sex # 性别
✅ user_type # 用户类型
✅ biz_type # 业务类型
✅ theme_type # 主题类型
❌ flag1 # 无意义
❌ type # 过于通用索引命名
普通索引
格式:idx_ + 字段名(多个字段用下划线连接)
text
✅ idx_user_name # 用户名单索引
✅ idx_create_time # 创建时间索引
✅ idx_dept_id_create_time # 部门 ID + 创建时间联合索引
❌ index1 # 无意义
❌ idx_userName # 使用 camelCase唯一索引
格式:uk_ + 字段名
text
✅ uk_account # 账号唯一索引
✅ uk_mobile # 手机号唯一索引
❌ unique_account # 使用 full 单词
❌ uk_userName # 使用 camelCase约束命名
主键约束
格式:pk_ + 表名
text
✅ pk_sys_user # 用户表主键
❌ primary # 无意义外键约束
格式:fk_ + 子表 + 父表 + 字段
text
✅ fk_sys_user_sys_dept_dept_id # 用户表部门 ID 外键
❌ foreign_key_1 # 无意义数据库命名
库名
text
✅ guava_prod # 生产库
✅ guava_dev # 开发库
✅ guava_test # 测试库
❌ GUAVA_PROD # 大写
❌ guavaProd # 驼峰命名 Checklist
建表/改表前自查:
- 表名使用
sys_前缀 + snake_case - 关联表命名格式为
sys_主表_从表 - 日志表命名格式为
sys_log_类型 - 字段名使用 snake_case,无拼音、无缩写
- 必备通用字段齐全(id、create_by、create_time、del_flag、status、version)
- 索引命名符合规范(
idx_/uk_前缀) - 名称不超过 30 字符
- 无无意义命名(
field1、col1、temp)