
# 数据库对象命名规范
- 【规格】不使用保留或非保留关键字命名数据库对象。
  可以使用如下命令查询数据库关键字，或者在[关键字](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0266.html#ZH-CN_TOPIC_0000002221496149)章节中查看。
  ```
  SELECT * FROM pg_get_keywords();
  ```
  

- 【规格】数据库对象命名长度不可超过63个字节。
  表1**数据库对象名称长度约束** 
  | **对象类型**  | **长度约束** **(** **单位：字节)** | **备注**                                                                                                                                                           |
  |:---|:---|:---|
  | 数据库名      | \<=63                                                                                                 | -                                                                                                                                                                |
  | 表名        | \<=63                                                                                                 | -                                                                                                                                                                |
  | 表对象       | \<=63                                                                                                 | 如果超过该长度内核会对表名进行截断，从而造成实际名称和设置值不一致的现象，且在不同字符集下，可能造成字符被截断，出现预期外的字符。                                                                                                |
  | 非业务使用的临时表 | \<=63                                                                                                 | 例如：运营人员临时用作备份或临时进行数据采集用的中间表。 命名规则：tmp_表名缩写_创建人账号缩写_创建日期，例如：tmp_user_ytw_160505       |
  | 表字段       | \<=63                                                                                                 | 字段命名使用实际含义的英文单词或简写。 例如表示bool类型的字段，命名规则："is_"+描述。如member表上表示为enabled的会员的列命名为is_enabled。 |
  | 视图名及字段名   | \<=63                                                                                                 | -                                                                                                                                                                |
  | 函数名及参数名   | \<=63                                                                                                 | -                                                                                                                                                                |
     
  

- 【规则】避免使用双引号括起来的字符串来定义数据库对象名称，除非必须限制数据库对象名称的大小写。
  - GaussDB默认不区分SQL中对象名称的大小写，假如同一数据库中同时存在"t_Table""t_table"两张不同的表，这种情况下应使用""双引号，如果不存在该情况，避免使用""双引号。
  
  - 数据库对象名称大小写敏感会使定位问题难度增加。
   
- 【规则】标识符需满足以下要求：
  - 以字母或下划线开头，中间字符可以是字母、数字、下划线、$、#。
  
  - 若标识符被双引号（""）包含或者B模式下被反引号（\`\`）包含，则可以使用合法字符的任意组合，如"123gs_column"。
  
  - 标识符不区分大小写，只有被双引号包含或者B模式下被反引号（\`\`）包含才区分大小写。
   
- 【建议】避免使用双引号括起来的字符串来定义数据库对象名称，除非需要限制数据库对象名称的大小写。数据库对象名称大小写敏感会使定位问题难度增加。
- 【建议】数据库对象命名风格务必保持统一。
  - 增量开发的业务系统或进行业务迁移的系统，建议遵守历史的命名风格。
  
  - 建议使用多个单词组成，以下划线分割。
  
  - 数据库对象名称建议能够望文知意，尽量避免使用自定义缩写（可以使用通用的术语缩写进行命名）。例如，在命名中可以使用具有实际业务含义的英文词汇或汉语拼音，但规则应该在数据库实例范围内保持一致。
  
  - 变量名的关键是要具有描述性，即变量名称要有一定的意义，变量名要有前缀标明该变量的类型。
   
- 【建议】表对象的命名应该可以表征该表的重要特征。例如，在表对象命名时区分该表是普通表、临时表还是非日志表：
  - 普通表名按照数据集的业务含义命名。
  
  - 临时表以"tmp_+后缀"命名。
  
  - 非日志表以"ul_+后缀"命名。
  
  - 不创建以redis_为前缀的数据库对象。
  
  - 不创建以mlog_和以matviewmap_为前缀的数据库对象。
   
 
