数据表规范 本文为您介绍数据表规范。 1. 首先明确规定所有逻辑业务上实现,禁用存储过程,函数,触发器,视图。 2. 统一使用InnoDB存储引擎,系统已指定默认存储引擎为innodb,所以创建表时无需再指定存储引擎。InnoDB存储引擎是事务型的存储引擎,支持行锁、MVCC、崩溃恢复、具有更高效的IO,更先进的缓引和写策略。 3. 创建表时要明确定义主键,推荐为int/bigint类型的字段作为主键,如果是自增ID则更为完美。 MySQL INNODB为索引组织表,如果没有显式定义主键,InnoDB会使用表上的唯一索引作为主键,如果这个索引特别长,性能会特别差;如果表上没有唯一索引,MySQL会创建一个6个字节的整型作为隐含的主键,存在被写完而不被察觉的风险,而且性能也不佳。 如果没有显式设置主键,则很多工具无法使用(如online ddl),会让日常的维护工作变得复杂。 自增ID可以用来做分页优化。 自增ID可以减少复制延时。 4. 数据表设计时必须包含日期字段,createitme 和lastupdatetime。 每个表的update语句,必须包含对UpdateTime的更新。 5. 每个数据表中字段数量尽可能少。当表的字段数较多时,建议将表分成两张表,一张作为条件查询表,一张作为详细内容表。 6. 数据表记录数尽可能少,线上单表数据建议不超过2000万行,可以通过分库、分表方式实现。 7. 创建表时,所有表名、字段名都需要添加注释,示例如下: plaintext 创建名为 exampletable 的表 CREATE TABLE exampletable ( id INT AUTOINCREMENT PRIMARY KEY, 主键ID,自增 username VARCHAR(50) NOT NULL, 用户名,不能为空 email VARCHAR(100) UNIQUE, 邮箱,唯一约束 age INT, 年龄,可以为空 createdat TIMESTAMP DEFAULT CURRENTTIMESTAMP 创建时间,默认当前时间 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; 8. 表字符集统一使用utf8mb4,核对规则为utf8mb4bin,不允许其它字符编码。也不允许在字段里边自己定义字符集,以下为违规示例: plaintext 错误示例:使用 utf8 字符集 CREATE TABLE exampletablewrong ( id INT AUTOINCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8; 错误示例:在字段级别定义字符集 CREATE TABLE exampletablewrong ( id INT AUTOINCREMENT PRIMARY KEY, username VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4bin NOT NULL );