本文是关于 MySQL 规范的信息,包括数据库命令规范、数据库设计、表设计、索引设计等方面。目的是为开发者、数据库管理员和其他技术人员提供一份全面的 MySQL 规范指南。
一、数据库命令规范
- 所有数据库对象名称必须使用小写字母并用下划线分割。
- 数据库对象的命名要能做到见名识意,且长度不要超过32个字符。
- 临时库表必须以
tmp_
为前缀并以日期为后缀,备份表必须以bak_
为前缀并以日期为后缀。 - 所有存储相同数据的列名和列类型必须一致。
二、数据库基本设计规范
- 所有表必须使用 InnoDB 存储引擎。
- 数据库和表的字符集统一使用 UTF8。
- 所有表和字段都需要添加注释。
- 控制单表数据量的大小,建议控制在500万以内。
- 谨慎使用 MySQL 分区表。
- 尽量做到冷热数据分离,减小表的宽度。
三、库名、表结构和字符集规范
- 库的名称必须控制在32个字符以内。
- 创建数据库时必须显式指定字符集,只能是 utf8 或 utf8mb4。
- 使用 comment 从句添加表和列的备注。
四、表设计
- 库名、表名、字段名必须使用小写字母,“_”分割。
- 存储精确浮点数必须使用 DECIMAL 替代 FLOAT 和 DOUBLE。
- 建议使用 UNSIGNED 存储非负数值。
- 尽可能不使用 TEXT、BLOB 类型。
- VARCHAR(N),N 尽可能小。
- 表字符集选择 UTF8。
- 存储年使用 YEAR 类型;存储日期使用 DATE 类型;存储时间建议使用 TIMESTAMP 类型。
- 建议字段定义为 NOT NULL。
- 禁止在数据库中使用 VARBINARY、BLOB 存储图片、文件等。
五、索引设计
- 非唯一索引必须按照“idx_字段名称_…”的命名规范。
- 联合索引要遵循最左前缀原则。
六、其他注意事项
- 在数据库变更和处理流程、SQL 编写等方面予以规范。
- 表结构变更需要通知 DBA 审核。