数据类型与设计规范
常用数据类型(选型思路)
| 类别 | 类型 | 说明 |
|---|---|---|
| 整数 | TINYINT … BIGINT | 在满足范围前提下 选更小类型 省空间 |
| 小数 | DECIMAL(p,s) | 金额等精确运算避免浮点误差 |
| 字符串 | CHAR / VARCHAR | 定长用 CHAR,变长用 VARCHAR;长文本 TEXT |
| 时间 | DATE / TIME / DATETIME / TIMESTAMP | 业务是否需要时区;勿用字符串存时间 |
| 枚举 | ENUM | 固定取值集合时可减少无效输入 |
| 半结构化 | JSON(5.7+) | 存文档型字段;复杂查询、索引与约束需单独设计 |
字符集新建库表优先 utf8mb4,兼容 Emoji 与完整 Unicode。
版本提示:自 MySQL 8.0.17 起,整数类型(如 INT(11))括号里的显示宽度已弃用含义,新建表可写 INT / BIGINT 即可,避免依赖「位数」语义。
命名规范(提要)
- 库 / 表 / 字段:小写 + 下划线
snake_case,见名知意;避免拼音与无意义缩写。 - 表名:多用 复数 表实体(团队内需统一);多对多关联表可用
a_b两实体组合。 - 主键:常用 无业务含义自增 id;业务唯一约束另建 唯一索引。
- 索引名:
idx_字段、uk_字段等便于运维识别。
范式与反范式
- 范式:减少冗余,更新一致性好。
- 反范式:适度冗余字段减少 JOIN,适合读多写少报表类查询。
根据读写比例权衡,避免过早冗余。
小结
类型 够用即可;命名与字符集 团队统一;表结构变更尽量 可回滚、可灰度。
