Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


对象命名规范

📄字数 2.5K
👁️阅读量 加载中...

命名规范是数据库设计的基础,在进行数据库开发时,对数据库中的对象应当有统一的命名方式,良好的命名能够有效提高代码的可读性和可维护性,便于其他开发者阅读、理解和继承使用。本节为 XuguDB 开发者提供统一、清晰且易扩展的命名规范建议。

一、通用规范

在对数据库中的对象进行命名时,有一些通用的规范和注意事项,具体如下所示:

  1. 一致性:整个项目中推荐使用统一的命名风格,包括大小写的使用、分隔符的位置以及对象名的前缀与后缀。
  2. 清晰性:对象的名称应当能够准确的反映对象的含义,避免使用模糊、不清晰的缩写或简写,推荐使用英文名词全称,不推荐使用中文标识、混用英文与拼音,不推荐全部使用数字、无意义的字母标识,或由下划线等特殊字符组成的无意义的字符串。
  3. 简洁性:在能够保证对象命名可读的前提下,名称应尽可能保持简短,推荐使用标准通用缩写。
  4. 避免保留字:数据库对象应当禁止使用数据库中的关键字或保留字作为对象名称。
  5. 风格:建议统一使用英文字符,以下划线连接多个单词,或按照团队统一约定,如驼峰式命名。
  6. 分隔符:推荐使用下划线分隔单词,不应当使用连字符或空格。

二、分类规范

2.1 用户命名规范

在进行数据库开发时,开发者会创建各类用户,通过这些用户来操作数据库。在创建这些用户时,建议对用户命名遵守一定的规范。本节给出以下命名建议,供开发者参考。

涉及系统中不同权限与职责的用户,建议统一使用usr_后加角色简称与描述性标识,如以下格式:

sql
usr_<role>_<identifier>

其中:

  • <role>:角色简称,建议使用统一的小写英文。
  • <identifier>:描述性标识,结合业务或个人信息,区分同一角色下的不同用户,例如姓名拼音、工号或部门简称等。

角色分类及命名示例

角色类型角色简称 (<role>)示例说明
系统管理员adminusr_admin_sys01全局最高权限管理账号,可按编号或用户名区分。
普通管理员mgrusr_mgr_sales_jane按业务模块(如 sales、hr)细分管理员角色。
审计员auditorusr_auditor_finance01财务审计员账号,可按审计领域或工号区分。
安全员secusr_sec_ops安全部门专员,ops 可表示运营安全人员。
普通用户userusr_user_john应用或系统最终使用者账号,通常以姓名或工号命名。
访客/外部用户guestusr_guest_temp123临时访问账号,编号或时间戳区分。

其他建议

  1. 保持角色简称一致,避免同义词混用,如adminadministrator重复使用。
  2. <identifier>根据场景与业务选用,确保唯一性与可读性。
  3. 高危权限用户可在命名中加入环境后缀,例如prdtest
  4. 当批量创建用户时,使用有序编号进行规范化。

2.2 表命名规范

在数据库开发过程中,创建表是重要的环节,来进行各种数据库操作,本节给出以下对表命名的建议供参考。

  • 一般性规范:
    • 由字母、数字、下划线组成,通常以字母开头,以字母或数字结尾,统一使用大写或小写字母。
    • 长度一般大于等于3或团队约定的研发规范,小于数据库表名的最大长度限制。
    • 不使用XuguDB中的关键字或保留字作为表名或部分表名。
  • 推荐
    • 使用字母开头。
    • 使用子模块名称或通用缩写标识开头,以下划线连接功能名称或通用缩写标识。
    • 使用数字标号对同一类型表做有序递增。
  • 不推荐
    • 使用单词的复数形式。
    • 使用下划线开头或结尾。
    • 使用数字开头。
    • 单独对数字进行分隔。

常用表类型命名示例

表类型命名格式示例说明
临时表tmp_<base_table>tmp_orders用于会话或临时计算的数据,生命周期短。
备份表bak_<base_table>_YYYYMMDDbak_orders_20250707定期全量或增量备份表,建议带日期后缀。
快照表snapshot_<base_table>_<version>snapshot_users_v1定期或按版本快照数据,适用于历史对比。
时间分表(分区)<base_table>_<YYYYMM>order_202507按月或按天分表,可根据业务查询粒度定义。
日志表<base_table>_logtransaction_log存储操作日志或审计信息。
历史表<base_table>_histcustomer_hist存储实体变更历史。
中间表/关联表<entity1>_<entity2>_relorder_product_rel存储多对多关系的中间表。

2.3 字段命名规范

在数据库开发过程中,表字段命名应当遵守一定的规范,本节给出以下命名建议,供开发者参考。

  • 推荐
    • 字段名一般统一使用大写或小写字母,不推荐混用。
    • 使用字母开头。
    • 命名时具有清晰的可读性,例如usr_id
    • 使用字段用途或通用缩写标识,使用下划线分隔。
  • 不推荐
    • 使用下划线开头或结尾。
    • 使用XuguDB保留字或关键字作为名称或部分名称。
    • 单独分隔数字。

常用字段类型命名示例

字段类型命名格式示例说明
主键<table>_idcustomer_id表的唯一标识,通常为自增或UUID类型。
外键<referenced>_idorder_id引用其他表主键,用于关联关系。
布尔类型is_<attribute>is_active标识属性状态,使用 is_has_ 前缀。
时间戳<action>_atcreated_at记录操作时间,使用 _at_time 后缀。
枚举/状态<entity>_statusorder_status表示状态或类型,使用 _status 后缀。
数量/计数<entity>_countitem_count计量数量时使用 _count 后缀。
金额/价格<entity>_amounttotal_amount金额或价格字段,使用 _amount_price
文本/描述<entity>_descproduct_desc长文本或说明,使用 _desc_description
JSON/结构化数据<entity>_datametadataorder_data存储可变属性,使用 _data 后缀。
版本号<entity>_versionapi_version标识版本号,使用 _version 后缀。

2.4 其他命名规范

本节对数据库中的其他对象命名方式提供规范性参考,包含以下内容。

约束与索引命名示例

对象类型命名格式示例说明
主键约束pk_<table>pk_customer表的主键约束
外键约束fk_<table>_<referenced>fk_orders_customer外键约束
普通索引idx_<table>_<column>idx_order_order_date非唯一索引
唯一索引uq_<table>_<column>uq_user_email唯一索引

其他对象命名示例

对象类型命名格式示例说明
视图v_<name>v_active_users数据聚合或简化查询的虚拟表
触发器trg_<table>_<action>trg_order_insert对表操作(INSERT/UPDATE/DELETE)的触发器
存储过程sp_<action>_<object>sp_create_order封装业务逻辑的存储过程
用户自定义函数fn_<action>_<object>fn_calc_discount返回值函数,用于计算或转换数据