跳到主要内容

3. 列定义

自增列不得使用有符号整数

英文名: SignedInteger4IdentityColumnDisallowed

规则描述: 禁止在自增列中使用有符号整数类型,以避免潜在的溢出问题。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 自增列使用了有符号整数类型。

可配置:

案例: 表达式可以配置为 unsigned int/unsigned bigint,表示自增列应当使用这些无符号整数类型。

支持的数据库类型: 所有 (ALL)

自增列的初始值应从0/1开始

英文名: InitValue4IdentityColumn

规则描述: 自增列的初始值应当从0或1开始,以确保生成的键值是唯一的。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 自增列的初始值不是0或1。

可配置:

案例: 表达式可以配置为 1,表示自增列的初始值应当从1开始。

支持的数据库类型: 所有 (ALL)

自增序列耗尽预警

英文名: CacheExhausted4IdentityColumn

规则描述: 当自增序列接近其最大值时,应发出预警,以避免序列耗尽。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 自增序列的当前值接近其最大值的预设阈值(如0.8)。

可配置:

案例: 表达式可以配置为 0.8,表示当自增序列的值达到其最大值的80%时发出预警。

支持的数据库类型: 所有 (ALL)

禁止使用ENUM数据类型

英文名: EnumDataTypeDisallowed

规则描述: 禁止使用ENUM数据类型,因为它不是SQL标准类型,可能导致移植性问题和数据维护困难。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 使用ENUM数据类型定义列。

可配置:

支持的数据库类型: 所有 (ALL)

禁止使用SET数据类型

英文名: SetDataTypeDisallowed

规则描述: 禁止使用SET数据类型,因为它可能导致数据维护和查询复杂性增加。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 使用SET数据类型定义列。

可配置:

支持的数据库类型: 所有 (ALL)

时间戳列需指定默认值

英文名: DefaultValue4TimeStampColumnsRequired

规则描述: 要求时间戳列必须指定默认值,以确保在没有显式插入时间戳值时,能够自动生成合理的默认时间。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 时间戳列未指定默认值。

可配置:

支持的数据库类型: 所有 (ALL)

整型建议采用 INT(10) 或 BIGINT(20)

英文名: UseInt10Bigint20ForInteger

规则描述: 建议整型字段使用INT(10)或BIGINT(20),以优化存储空间和性能。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE MODIFY COLUMN

触发条件: 整型字段未使用推荐的INT(10)或BIGINT(20)。

可配置:

支持的数据库类型: 所有 (ALL)

精确浮点数建议使用DECIMA或Number

英文名: UseDecimalForNumericColumns

规则描述: 对于需要精确表示的浮点数,建议使用DECIMAL类型,以避免浮点数运算的精度问题。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE MODIFY COLUMN

触发条件: 使用浮点数类型而未使用DECIMAL。

可配置:

支持的数据库类型: 所有 (ALL)

非空字段必须带默认值

英文名: DefaultValue4NonNullColumnsRequired

规则描述: 对于定义为非空(NOT NULL)的字段,必须指定默认值,以避免插入数据时出现错误。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE MODIFY COLUMN

触发条件: 非空字段未指定默认值。

可配置:

支持的数据库类型: 所有 (ALL)

表需定义更新时间戳列

英文名: UpdateTimeStampColumnsRequired

规则描述: 要求表中包含更新时间戳列,以记录数据的最后更新时间,有助于跟踪数据变更。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 表中未定义更新时间戳列。

可配置:

支持的数据库类型: 所有 (ALL)

VARCHAR字段长度超过阈值

英文名: Length4VarcharExceedThreshold

规则描述: 限制VARCHAR字段的最大长度,以避免性能问题和不必要的存储开销。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE MODIFY COLUMN

触发条件: VARCHAR字段的长度超过了预设的阈值(如10000)。

可配置:

案例: 表达式可以配置为 10000,表示VARCHAR字段的长度不应超过10000个字符。

支持的数据库类型: 所有 (ALL)

长度超过阈值的CHAR类型应修改为VARCHAR类型

英文名: Length4CharColumnExceedThreshold

规则描述: 当CHAR类型字段的长度超过一定阈值时,应考虑修改为VARCHAR类型,以动态存储长度变化的数据。

预警级别: 通知 (Notice)

审查对象: CREATE TABLE, ALTER TABLE MODIFY COLUMN

触发条件: CHAR字段的长度超过了预设的阈值(如64)。

可配置:

案例: 表达式可以配置为 64,表示CHAR字段的长度不应超过64个字符。

支持的数据库类型: 所有 (ALL)

不允许使用时间戳类型

英文名: TimestampDatatypeDisallowed

规则描述: 禁止使用时间戳类型,因为它可能存在最大值限制和时区转换问题。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 使用时间戳类型定义列。

可配置:

支持的数据库类型: MySQL

禁止使用的数据类型

英文名: DataTypesDisallowed

规则描述: 禁止使用某些数据类型,因为这些数据类型不支持或不推荐使用。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 使用了被禁止的数据类型(如JSON, BJSON, XML)。

可配置:

案例: 表达式可以配置为 JSON,BJSON,XML,表示禁止使用JSON、BJSON和XML类型的数据。

支持的数据库类型: 所有 (ALL)

时间类型字段未设置默认值或默认值为空

英文名: DefaultValue4TimeOrDateTimeColumnsRequired

规则描述: 要求时间或日期时间类型的字段必须设置默认值,以避免插入操作时产生无效的日期时间值。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE, ALTER TABLE ADD COLUMN

触发条件: 时间或日期时间类型的字段未设置默认值或默认值为空。

可配置:

支持的数据库类型: 所有 (ALL)