framework
framework/mysql/schema/index.md
medium
framework-mysql-schema-index
MySQL Schema 与字段设计 4 个独立决策点 — 数值/时间/金额类型选型、字符串类型选型、NOT NULL 与默认值、字符集统一 utf8mb4。Use when 建表选字段类型 / 评审 DDL 字段定义 / 排查字符集乱码或 JOIN 隐式转换时。
子项索引
| 子项 | 一句话 |
|---|---|
| mysql-column-type-choice skill | MySQL 数值/时间/金额字段选型 — 整型能小不大、布尔用 TINYINT、金额必用 DECIMAL 禁 FLOAT、时间在 DATETIME 与 BIGINT 时间戳间取舍 |
| mysql-string-type-choice skill | MySQL 字符串字段选型 — 定长用 CHAR、变长用 VARCHAR 并按实际估长度,大文本 TEXT/BLOB 拆出主表避免拖慢行扫描 |
| mysql-not-null-and-default skill | MySQL 列尽量 NOT NULL 加合理默认值 — NULL 让索引/聚合/比较语义复杂且占额外标记位,能给默认值就别留 NULL |
| mysql-charset-utf8mb4 skill | MySQL 字符集统一 utf8mb4 — utf8 是阉割版存不下 emoji/4 字节字符,库表列与连接全用 utf8mb4,JOIN 两列 collation 须一致否则隐式转换使索引失效 |
MySQL · Schema 与字段设计索引
字段设计拆成 4 个独立决策点,按你正在做的事下钻:
| 你在做什么 | 进哪个 |
|---|---|
| 选数值/时间/金额字段类型 | column-type-choice |
| 选字符串字段类型(CHAR/VARCHAR/TEXT) | string-type-choice |
| 纠结某列要不要 NOT NULL、给什么默认值 | not-null-and-default |
| 定字符集/排序规则、排查乱码或 JOIN 隐式转换 | charset-utf8mb4 |
链接
- 上层:
../index.md - 兄弟维度:
../index/index.md - 语句层(建表/迁移模板):
../../../lang/sql/ddl/index.md