Skip to content

数据库命名规范

文档编号: SYS-DB-STD-001
版本: 1.0
日期: 2026-03-08
作者: 数据库架构师
状态: ✅ 已发布
审核状态: ✓ 已审核通过
审核日期: 2026-03-08
审核人: 技术总监


一、概述

1.1 目的

本文档定义System平台数据库设计的命名规范,确保数据库对象命名的一致性、可读性和可维护性。

1.2 适用范围

  • 数据库名称
  • 表名称
  • 字段名称
  • 索引名称
  • 约束名称
  • 视图名称
  • 存储过程/函数名称

1.3 命名原则

  1. 简洁性: 名称应简洁明了,避免过长
  2. 可读性: 使用有意义的英文单词或缩写
  3. 一致性: 全系统遵循统一的命名规则
  4. 规范性: 避免使用保留字和特殊字符

二、数据库命名规范

2.1 命名规则

格式: db_<系统名>[_<环境标识>]

示例:
- db_system          # 生产环境
- db_system_dev      # 开发环境
- db_system_test     # 测试环境

2.2 规则说明

项目规则示例
前缀统一使用 db_db_
系统名小写字母,多个单词用下划线连接system, user_center
环境标识dev/test/prod,可选_dev, _test

三、表命名规范

3.1 命名规则

格式: <前缀>_<模块名>_<表名>

示例:
- sys_user              # 系统用户表
- sys_role              # 系统角色表
- sys_user_role         # 用户角色关系表
- biz_order             # 业务订单表
- log_operation         # 操作日志表

3.2 前缀定义

前缀含义使用场景
sys_系统模块用户、角色、权限、配置等系统基础表
biz_业务模块业务相关的核心数据表
log_日志模块操作日志、登录日志等
tmp_临时表临时数据处理表,使用后清理
bak_备份表数据备份表,定期清理
his_历史表历史数据归档表

3.3 模块名定义

模块名说明示例表
user用户管理sys_user, sys_user_role
role角色权限sys_role, sys_permission
dept组织架构sys_dept, sys_position
config系统配置sys_config, sys_dict
log日志审计log_operation, log_login

3.4 表名长度限制

  • 表名总长度不超过 30 个字符
  • 模块名不超过 10 个字符
  • 表名部分不超过 20 个字符

四、字段命名规范

4.1 命名规则

格式: <业务含义>[_<修饰词>]

示例:
- user_name             # 用户名
- create_time           # 创建时间
- is_deleted            # 是否删除
- parent_id             # 父级ID
- sort_order            # 排序号

4.2 常用字段命名

4.2.1 主键字段

字段名数据类型说明
idBIGINT主键ID,自增

4.2.2 审计字段

字段名数据类型说明
create_timeDATETIME创建时间
update_timeDATETIME更新时间
create_byBIGINT创建人ID
update_byBIGINT更新人ID

4.2.3 状态字段

字段名数据类型说明
statusTINYINT状态(0-禁用, 1-启用)
deletedTINYINT删除标志(0-正常, 1-删除)
is_xxxTINYINT是否xxx(0-否, 1-是)

4.2.4 关系字段

字段名数据类型说明
xxx_idBIGINT外键关联字段
parent_idBIGINT父级ID(自关联)
tenant_idBIGINT租户ID(多租户)

4.2.5 排序字段

字段名数据类型说明
sort_orderINT排序号(升序)
sort_noINT排序编号

4.3 字段命名规则

规则说明正确示例错误示例
小写字母全部使用小写user_nameUserName
下划线分隔单词间用下划线create_timecreateTime
避免缩写使用完整单词descriptiondesc
单数形式不使用复数userusers
避免保留字不使用SQL保留字user_namename

五、索引命名规范

5.1 命名规则

格式: <前缀>_<表名>_<字段名>[_<序号>]

示例:
- idx_user_username         # 用户表用户名索引
- idx_user_phone            # 用户表手机号索引
- idx_order_user_id_status  # 订单表用户ID和状态联合索引
- uk_user_email             # 用户表邮箱唯一索引
- pk_user                   # 用户表主键索引

5.2 前缀定义

前缀含义使用场景
idx_普通索引非唯一索引
uk_唯一索引唯一约束索引
pk_主键索引主键约束索引
fk_外键索引外键约束索引
ft_全文索引全文搜索索引

5.3 索引命名示例

索引类型表名字段索引名称
普通索引sys_userusernameidx_user_username
普通索引sys_userphoneidx_user_phone
联合索引sys_userdept_id, statusidx_user_dept_status
唯一索引sys_useremailuk_user_email
主键索引sys_useridpk_user
外键索引sys_user_roleuser_idfk_user_role_user_id

六、约束命名规范

6.1 命名规则

格式: <前缀>_<表名>[_<字段名>]

示例:
- pk_user                   # 用户表主键约束
- uk_user_username          # 用户表用户名唯一约束
- uk_user_email             # 用户表邮箱唯一约束
- fk_user_dept_id           # 用户表部门外键约束
- chk_user_status           # 用户表状态检查约束

6.2 前缀定义

前缀含义使用场景
pk_Primary Key主键约束
uk_Unique Key唯一约束
fk_Foreign Key外键约束
chk_Check检查约束

七、视图命名规范

7.1 命名规则

格式: <前缀>_<视图描述>

示例:
- v_user_role               # 用户角色视图
- v_user_detail             # 用户详情视图
- v_order_statistics        # 订单统计视图

7.2 前缀定义

前缀含义使用场景
v_普通视图常规查询视图
v_stat_统计视图数据统计视图
v_report_报表视图报表查询视图

八、存储过程/函数命名规范

8.1 命名规则

格式: <前缀>_<功能描述>

示例:
- sp_batch_update_status    # 批量更新状态存储过程
- sp_data_cleanup           # 数据清理存储过程
- fn_calc_age               # 计算年龄函数
- fn_get_user_name          # 获取用户名函数

8.2 前缀定义

前缀含义使用场景
sp_Stored Procedure存储过程
fn_Function函数
trg_Trigger触发器

九、命名禁用清单

9.1 禁用保留字

以下单词禁止作为对象名称:

SELECT, INSERT, UPDATE, DELETE, FROM, WHERE, AND, OR, NOT
NULL, TRUE, FALSE, TABLE, INDEX, VIEW, DATABASE, SCHEMA
USER, ROLE, GRANT, REVOKE, PRIMARY, FOREIGN, KEY, REFERENCES
ORDER, GROUP, BY, HAVING, JOIN, INNER, OUTER, LEFT, RIGHT

9.2 禁用特殊字符

  • 禁止使用空格
  • 禁止使用连字符 -
  • 禁止使用点号 .
  • 禁止使用斜杠 / \
  • 禁止使用中文

9.3 禁用前缀/后缀

  • 禁止使用 tbl_ 作为表前缀
  • 禁止使用 col_ 作为字段前缀
  • 禁止使用 sp_ 作为存储过程前缀(系统保留)
  • 禁止使用 fn_ 作为函数前缀(系统保留)

十、命名示例汇总

10.1 完整示例

sql
-- 数据库
CREATE DATABASE db_system CHARACTER SET utf8mb4;

-- 表
CREATE TABLE sys_user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    phone VARCHAR(20),
    status TINYINT DEFAULT 1,
    dept_id BIGINT,
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    update_time DATETIME ON UPDATE CURRENT_TIMESTAMP,
    deleted TINYINT DEFAULT 0,
    tenant_id BIGINT DEFAULT 0,
    
    -- 约束
    CONSTRAINT pk_user PRIMARY KEY (id),
    CONSTRAINT uk_user_username UNIQUE (username),
    CONSTRAINT uk_user_email UNIQUE (email),
    CONSTRAINT fk_user_dept_id FOREIGN KEY (dept_id) REFERENCES sys_dept(id)
);

-- 索引
CREATE INDEX idx_user_phone ON sys_user(phone);
CREATE INDEX idx_user_dept_status ON sys_user(dept_id, status);

-- 视图
CREATE VIEW v_user_role AS
SELECT u.id, u.username, r.role_name
FROM sys_user u
LEFT JOIN sys_user_role ur ON u.id = ur.user_id
LEFT JOIN sys_role r ON ur.role_id = r.id;

十一、审核签字

角色签字日期
编制人数据库架构师2026-03-08
审核人技术总监2026-03-08
批准人技术总监2026-03-08

审核意见: 规范内容完整,命名规则清晰,符合项目要求,同意发布实施。


十二、修订记录

版本日期作者变更内容
1.02026-03-08数据库架构师初始版本,建立数据库命名规范

Released under the MIT License.