跳到主要内容

1. 命名规范

采用统一的数据库对象命名规范具有重要的意义,它能够为数据库的开发、维护、管理和优化带来一系列的优势和便利:

  1. 提高可读性:统一的命名规范使得数据库对象(如表、字段、索引、视图、存储过程等)的名称更加直观和易于理解。这有助于开发者和数据库管理员快速理解每个对象的用途和功能。
  2. 增强可维护性:当数据库结构变得复杂时,统一的命名规范可以减少维护成本。清晰、一致的命名有助于快速定位问题和进行必要的修改,从而提高维护效率。
  3. 促进团队协作:在团队开发环境中,统一的命名规范确保了所有团队成员对数据库对象有共同的理解,这有助于提高沟通效率,减少误解和错误。
  4. 便于数据迁移和集成:标准化的命名规范有助于在不同的系统和平台之间迁移数据,同时也便于与其他系统集成,因为其他系统可以通过这些规范的命名来理解数据库结构。
  5. 减少错误和冲突:统一的命名规范可以减少命名冲突和拼写错误的可能性,从而减少因误解命名而导致的错误操作。

总之,统一的数据库对象命名规范是数据库管理的最佳实践之一,它有助于提高数据库的整体质量和效率,同时为组织带来长期的益处。

信息

PawSQL的SQL审核体系为数据库对象的命名提供了10个审查规则,用户可以基于这些规则进行定制化的配置,可以满足各种数据库在各种场景下的绝大部分的命名规范要求的检查。

NC001:表名命名规范

  • 英文名: Table naming convention
  • 规则描述: 此规则定义了表名的命名规范,通常要求表名使用小写字母和下划线,以保持一致性和可读性。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE TABLE
  • 触发条件: 表名不符合命名规范(例如,使用了大写字母或特殊字符)。
  • 可配置:
  • 案例: 表达式可以配置为正则表达式,如^[a-z]+(_[a-z]+)*$,表示表名应全部为小写,并由字母和下划线组成。
  • 支持的数据库类型: 所有 (ALL)

NC002:列名命名规范

  • 英文名: Column naming convention
  • 规则描述: 此规则定义了列名的命名规范,通常要求列名使用小写字母和下划线,以保持一致性和可读性。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN
  • 触发条件: 列名不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为正则表达式,如^[a-z]+(_[a-z]+)*$,表示列名应全部为小写,并由字母和下划线组成。
  • 支持的数据库类型: 所有 (ALL)

NC003:唯一性索引命名规范

  • 英文名: Unique key naming convention
  • 规则描述: 此规则定义了唯一性索引的命名规范,通常包括表名和列名的组合,以便于识别和管理。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE INDEX
  • 触发条件: 唯一性索引的名称不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^uk_{{table}}_{{column_list}}$,其中{{table}}{{column_list}}是变量,表示索引名应以uk_开头,后跟表名和列名列表。
  • 支持的数据库类型: 所有 (ALL)

NC004:主键命名规范

  • 英文名: Primary key naming convention
  • 规则描述: 此规则定义了主键的命名规范,通常包括表名和pk的组合,以便于识别主键约束。
  • 预警级别:提示(Notice)
  • 审查对象: CREATE TABLE, ALTER TABLE ADD CONSTRAINT
  • 触发条件: 主键的名称不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^pk_{{table}}_{{column_list}}$,其中{{table}}{{column_list}}是变量,表示主键名应以pk_开头,后跟表名和列名列表。
  • 支持的数据库类型: 所有 (ALL)

NC005:外键命名规范

  • 英文名: Foreign key naming convention
  • 规则描述: 此规则定义了外键的命名规范,通常包括引用表名、引用列名和被引用表名、被引用列名的组合。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE TABLE, ALTER TABLE ADD CONSTRAINT
  • 触发条件: 外键的名称不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^fk_{{referencing_table}}_{{referencing_column}}_{{referenced_table}}_{{referenced_column}}$,其中{{referencing_table}}{{referencing_column}}{{referenced_table}}{{referenced_column}}是变量,表示外键名应包含引用和被引用的表名及列名。
  • 支持的数据库类型: 所有 (ALL)

NC006:索引命名规范

  • 英文名: Index naming convention
  • 规则描述: 此规则定义了索引的命名规范,通常包括表名和列名的组合,以便于识别和管理索引。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE INDEX
  • 触发条件: 索引的名称不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^idx_{{table}}_{{column_list}}$,其中{{table}}{{column_list}}是变量,表示索引名应以idx_开头,后跟表名和列名列表。
  • 支持的数据库类型: 所有 (ALL)

NC007:自增列命名规范

  • 英文名: Auto-increment column naming convention
  • 规则描述: 此规则定义了自增列的命名规范,通常要求自增列有一个明确的命名模式,如id,以便于识别自增列。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN
  • 触发条件: 自增列的名称不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为id^id$,表示自增列应命名为id
  • 支持的数据库类型: 所有 (ALL)

NC008:数据库命名规范

  • 英文名: Database naming convention
  • 规则描述: 此规则定义了数据库的命名规范,通常要求数据库名使用小写字母和连字符(kebab-case),以保持一致性和可读性。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE DATABASE
  • 触发条件: 数据库名不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^[a-z]+(-[a-z]+)*$,表示数据库名应全部为小写,并由字母和连字符组成。
  • 支持的数据库类型: 所有 (ALL)

NC009: Schema 命名规范

  • 英文名: Schema naming convention
  • 规则描述: 此规则定义了数据库模式(schema)的命名规范,与数据库命名规范类似,要求模式名使用小写字母和连字符。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE SCHEMA
  • 触发条件: 模式名不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^[a-z]+(-[a-z]+)*$,表示模式名应全部为小写,并由字母和连字符组成。
  • 支持的数据库类型: 所有 (ALL)

NC010:CREATE_AS_SELECT命名规范

  • 英文名: CREATE TABLE AS SELECT naming convention
  • 规则描述: 此规则定义了使用CREATE TABLE AS SELECT语句创建表时的命名规范,通常要求新表名具有特定的格式。
  • 预警级别: 提示(Notice)
  • 审查对象: CREATE TABLE AS SELECT
  • 触发条件: 使用CREATE TABLE AS SELECT创建的表名不符合命名规范。
  • 可配置:
  • 案例: 表达式可以配置为^{table}_TS$,其中{table}是变量,表示新表名应基于选定的表名,并以_TS结尾。
  • 支持的数据库类型: 所有 (ALL)