# 对象命名规范

用于规范数据库对象的名命，如数据库（DATABASE）、表（TABLE）、索引（INDEX）、用户（USER）等的命名约定。

## 1. 原则

1. 命名建议使用具有意义的英文词汇，词汇中间以下划线分隔；

2. 命名只能使用英文字母、数字、下划线；

3. 避免用 TiDB 的保留字如：group，order 等作为单个字段名；

4. 建议所有数据库对象使用小写字母。

## 2. 数据库命名规范

建议按照业务、产品线或者其它指标进行区分，一般不要超过 20 个字符。如：临时库（tmp_crm）、测试库（test_crm）。

## 3. 表命名规范

1. 同一业务或者模块的表尽可能使用相同的前缀，表名称尽可能表达含义；

2. 多个单词以下划线分隔，不推荐超过32个字符；

3. 建议对表的用途进行注释说明，以便于统一认识。如：

   - 临时表（tmp_t_crm_relation_0425）

   - 备份表（bak_t_crm_relation_20170425）

   - 业务运营临时统计表（tmp_st_[业务代码]*[创建人缩写]*[日期]）

   - 账期归档表（t_crm_ec_record_YYYY[MM][DD]）

4. 不同业务模块的表单独建立 DATABASE，并增加相应注释。

5. 目前 TiDB 只支持将 `lower-case-table-names` 值设为 2，即按照大小写来保存表名，按照小写来比较（不区分大小写）。

## 4 字段命名规范

1. 字段命名需要表示其实际含义的英文单词或简写；

2. 建议各表之间相同意义的字段应同名；

3. 字段也尽量添加注释，枚举型需指明主要值的含义，如”0 - 离线，1 - 在线”；

4. 布尔值列命名为 [is_描述]。如 member 表上表示为 enabled 的会员的列命名为 is_enabled；

5. 字段名不建议超过 30 个字符，字段个数不建议大于 60。

6. 尽量避免使用保留字，如 order、from、desc 等，请参考附录部分的官方保留字。

## 5 索引命名规范

1. 主键索引：pk_[表名称简写]_[字段名简写]

2. 唯一索引：uk_[表名称简写]_[字段名简写]

3. 普通索引：idx_[表名称简写]_[字段名简写]

4. 多单词组成的 column_name，取尽可能代表意义的缩写。
