对象命名规范
📄字数 2.5K
👁️阅读量 加载中...
命名规范是数据库设计的基础,在进行数据库开发时,对数据库中的对象应当有统一的命名方式,良好的命名能够有效提高代码的可读性和可维护性,便于其他开发者阅读、理解和继承使用。本节为 XuguDB 开发者提供统一、清晰且易扩展的命名规范建议。
一、通用规范
在对数据库中的对象进行命名时,有一些通用的规范和注意事项,具体如下所示:
- 一致性:整个项目中推荐使用统一的命名风格,包括大小写的使用、分隔符的位置以及对象名的前缀与后缀。
- 清晰性:对象的名称应当能够准确的反映对象的含义,避免使用模糊、不清晰的缩写或简写,推荐使用英文名词全称,不推荐使用中文标识、混用英文与拼音,不推荐全部使用数字、无意义的字母标识,或由下划线等特殊字符组成的无意义的字符串。
- 简洁性:在能够保证对象命名可读的前提下,名称应尽可能保持简短,推荐使用标准通用缩写。
- 避免保留字:数据库对象应当禁止使用数据库中的关键字或保留字作为对象名称。
- 风格:建议统一使用英文字符,以下划线连接多个单词,或按照团队统一约定,如驼峰式命名。
- 分隔符:推荐使用下划线分隔单词,不应当使用连字符或空格。
二、分类规范
2.1 用户命名规范
在进行数据库开发时,开发者会创建各类用户,通过这些用户来操作数据库。在创建这些用户时,建议对用户命名遵守一定的规范。本节给出以下命名建议,供开发者参考。
涉及系统中不同权限与职责的用户,建议统一使用usr_
后加角色简称与描述性标识,如以下格式:
sql
usr_<role>_<identifier>
其中:
<role>
:角色简称,建议使用统一的小写英文。<identifier>
:描述性标识,结合业务或个人信息,区分同一角色下的不同用户,例如姓名拼音、工号或部门简称等。
角色分类及命名示例
角色类型 | 角色简称 (<role> ) | 示例 | 说明 |
---|---|---|---|
系统管理员 | admin | usr_admin_sys01 | 全局最高权限管理账号,可按编号或用户名区分。 |
普通管理员 | mgr | usr_mgr_sales_jane | 按业务模块(如 sales、hr)细分管理员角色。 |
审计员 | auditor | usr_auditor_finance01 | 财务审计员账号,可按审计领域或工号区分。 |
安全员 | sec | usr_sec_ops | 安全部门专员,ops 可表示运营安全人员。 |
普通用户 | user | usr_user_john | 应用或系统最终使用者账号,通常以姓名或工号命名。 |
访客/外部用户 | guest | usr_guest_temp123 | 临时访问账号,编号或时间戳区分。 |
其他建议
- 保持角色简称一致,避免同义词混用,如
admin
与administrator
重复使用。 <identifier>
根据场景与业务选用,确保唯一性与可读性。- 高危权限用户可在命名中加入环境后缀,例如
prd
或test
。 - 当批量创建用户时,使用有序编号进行规范化。
2.2 表命名规范
在数据库开发过程中,创建表是重要的环节,来进行各种数据库操作,本节给出以下对表命名的建议供参考。
- 一般性规范:
- 由字母、数字、下划线组成,通常以字母开头,以字母或数字结尾,统一使用大写或小写字母。
- 长度一般大于等于3或团队约定的研发规范,小于数据库表名的最大长度限制。
- 不使用XuguDB中的关键字或保留字作为表名或部分表名。
- 推荐
- 使用字母开头。
- 使用子模块名称或通用缩写标识开头,以下划线连接功能名称或通用缩写标识。
- 使用数字标号对同一类型表做有序递增。
- 不推荐
- 使用单词的复数形式。
- 使用下划线开头或结尾。
- 使用数字开头。
- 单独对数字进行分隔。
常用表类型命名示例
表类型 | 命名格式 | 示例 | 说明 |
---|---|---|---|
临时表 | tmp_<base_table> | tmp_orders | 用于会话或临时计算的数据,生命周期短。 |
备份表 | bak_<base_table>_YYYYMMDD | bak_orders_20250707 | 定期全量或增量备份表,建议带日期后缀。 |
快照表 | snapshot_<base_table>_<version> | snapshot_users_v1 | 定期或按版本快照数据,适用于历史对比。 |
时间分表(分区) | <base_table>_<YYYYMM> | order_202507 | 按月或按天分表,可根据业务查询粒度定义。 |
日志表 | <base_table>_log | transaction_log | 存储操作日志或审计信息。 |
历史表 | <base_table>_hist | customer_hist | 存储实体变更历史。 |
中间表/关联表 | <entity1>_<entity2>_rel | order_product_rel | 存储多对多关系的中间表。 |
2.3 字段命名规范
在数据库开发过程中,表字段命名应当遵守一定的规范,本节给出以下命名建议,供开发者参考。
- 推荐
- 字段名一般统一使用大写或小写字母,不推荐混用。
- 使用字母开头。
- 命名时具有清晰的可读性,例如
usr_id
。 - 使用字段用途或通用缩写标识,使用下划线分隔。
- 不推荐
- 使用下划线开头或结尾。
- 使用XuguDB保留字或关键字作为名称或部分名称。
- 单独分隔数字。
常用字段类型命名示例
字段类型 | 命名格式 | 示例 | 说明 |
---|---|---|---|
主键 | <table>_id | customer_id | 表的唯一标识,通常为自增或UUID类型。 |
外键 | <referenced>_id | order_id | 引用其他表主键,用于关联关系。 |
布尔类型 | is_<attribute> | is_active | 标识属性状态,使用 is_ 或 has_ 前缀。 |
时间戳 | <action>_at | created_at | 记录操作时间,使用 _at 或 _time 后缀。 |
枚举/状态 | <entity>_status | order_status | 表示状态或类型,使用 _status 后缀。 |
数量/计数 | <entity>_count | item_count | 计量数量时使用 _count 后缀。 |
金额/价格 | <entity>_amount | total_amount | 金额或价格字段,使用 _amount 或 _price 。 |
文本/描述 | <entity>_desc | product_desc | 长文本或说明,使用 _desc 或 _description 。 |
JSON/结构化数据 | <entity>_data | metadata 或 order_data | 存储可变属性,使用 _data 后缀。 |
版本号 | <entity>_version | api_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 | 返回值函数,用于计算或转换数据 |