本文是关于 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 审核。