一、表结构规范1. 每个表必须有主键id bigint NOT NULL AUTO_INCREMENT COMMENT 主键ID推荐类型bigint名称id主键PRIMARY KEY禁止外键关联原因避免无主键表导致InnoDB 隐式主键提升索引效率2. 审计字段统一必须包含create_user bigint DEFAULT NULL COMMENT 创建人, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_user bigint DEFAULT NULL COMMENT 修改人, update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间规范必须放在id后面后续新增字段统一追加到最后结构示例id create_user create_time update_user update_time 业务字段...3. 字符集统一数据库 / 表统一CHARSETutf8mb4 COLLATEutf8mb4_general_ci原因支持 emoji避免乱码4. 存储引擎统一ENGINEInnoDB原因支持事务支持行锁5. 表必须有表注释COMMENT用户信息表二、字段设计规范1. 字段必须有注释username varchar(50) NOT NULL DEFAULT COMMENT 用户名禁止username varchar(50)2. varchar 字段禁止 NULL统一varchar NOT NULL DEFAULT 示例nickname varchar(50) NOT NULL DEFAULT COMMENT 昵称原因避免 NULL 逻辑判断复杂提高查询效率3. 数值字段默认值推荐int NOT NULL DEFAULT 0 decimal(10,2) NOT NULL DEFAULT 0.00示例price decimal(10,2) NOT NULL DEFAULT 0.00 COMMENT 价格4. 排序字段统一命名sort_no示例sort_no int NOT NULL DEFAULT 0 COMMENT 排序号5. 状态字段统一推荐status示例status tinyint NOT NULL DEFAULT 1 COMMENT 状态 1正常 0禁用6. 逻辑删除字段推荐is_deleted示例is_deleted tinyint NOT NULL DEFAULT 0 COMMENT 是否删除 0否 1是7. 布尔字段命名推荐is_xxx has_xxx示例is_enabled is_deleted has_children8. 时间字段类型统一使用datetime不推荐timestamp原因timestamp 范围小时区问题三、命名规范1. 表名规则模块名前四个字符_实体示例system:syst_user_info trade:trad_order_info product:prod_category禁止UserInfo userInfo2. 字段名统一snake_case示例user_name create_time order_status禁止userName UserName3. 索引命名规则idx_字段示例idx_user_id idx_create_time联合索引idx_userid_status唯一索引uk_email四、索引设计规范1. 高频查询字段必须加索引例如user_id order_id create_time2. 单表索引数量建议 5 个原因写入性能下降3. 避免冗余索引例如idx_userid idx_userid_statusidx_userid可以删除。4. 避免在字段上做函数错误DATE(create_time) 2026-03-12正确create_time 2026-03-12五、SQL 规范1. 禁止select *必须select id,username原因减少 IO防止字段变更影响程序2. delete / update 必须带条件禁止delete from user必须delete from user where id13. limit 必须存在防止limit 100004. 大分页优化避免limit 100000,10推荐where id last_id六、数据量规范单表建议 500 万超过分表分库七、字段类型规范推荐类型使用场景bigintidint数值tinyint状态varchar文本decimal金额datetime时间避免text longtext blob除非必要。八、金额规范必须decimal(10,2)禁止float double原因精度问题九、扩展字段规范如果有扩展字段ext_json json COMMENT 扩展字段避免ext1 ext2 ext3推荐的标准表结构模板CREATE TABLE user_info ( id bigint NOT NULL AUTO_INCREMENT COMMENT 主键ID, create_user bigint DEFAULT NULL COMMENT 创建人, create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_user bigint DEFAULT NULL COMMENT 修改人, update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, username varchar(50) NOT NULL DEFAULT COMMENT 用户名, nickname varchar(50) NOT NULL DEFAULT COMMENT 昵称, status tinyint NOT NULL DEFAULT 1 COMMENT 状态 1正常 0禁用, sort_no int NOT NULL DEFAULT 0 COMMENT 排序号, is_deleted tinyint NOT NULL DEFAULT 0 COMMENT 是否删除, PRIMARY KEY (id), KEY idx_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci COMMENT用户信息表;再补充 3 个很多公司忽略但很重要的规范1. 禁止使用保留关键字例如order group desc2. 禁止使用过长 varchar推荐varchar(50) varchar(100) varchar(255)避免varchar(2000)3. 表字段数量建议 30 个太多说明表设计不合理应拆表