# Mysql Table Design

> MySQL 建表规约 — 表命名、字段类型、必备字段。Use when creating or modifying database tables, designing schemas, defining field types.

- Skill: `liaosw97/mysql-table-design` (Agent Skill)
- Install (CLI): `npx skillmds@latest add liaosw97/mysql-table-design`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liaosw97/mysql-table-design/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: liaosw97 (https://skillmd.com/u/liaosw97)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/liaosw97/mysql-table-design

---


# MySQL 建表规约

## 表命名规范

```sql
-- 正确：小写字母 + 下划线
CREATE TABLE aliyun_admin (...);
CREATE TABLE trade_config (...);

-- 错误：大写字母、驼峰
-- CREATE TABLE AliyunAdmin (...);  -- ❌
-- CREATE TABLE tradeConfig (...);  -- ❌
```

## 字段类型选择

| 场景 | 类型 | 说明 |
|------|------|------|
| 布尔值 | `tinyint unsigned` | 1=是, 0=否 |
| 小数 | `decimal` | 禁用 float/double |
| 定长字符串 | `char` | 长度几乎相等时 |
| 变长字符串 | `varchar(≤5000)` | 超过用 text 分表 |
| 年龄 | `tinyint unsigned` | 0-255 |
| 主键 | `bigint unsigned` | 自增 |

## 必备三字段

```sql
CREATE TABLE example (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    create_time DATETIME NOT NULL,
    update_time DATETIME NOT NULL
);
```

## 关键规则

1. **表名不用复数** — `user` 而非 `users`
2. **禁用保留字** — 如 `desc`, `range`, `match`
3. **逻辑删除** — 使用 `is_deleted` 字段，不用物理删除
4. **字段冗余** — 适当冗余提升查询性能，但需考虑一致性

