数据库命名规范
核心原则
数据库命名必须使用 snake_case(下划线),使用小写字母,确保命名清晰、一致。
允许的做法
表名
- 使用 复数形式
- 使用 snake_case 命名
- 使用 小写字母
sql
-- ✅ 正确
CREATE TABLE users (...);
CREATE TABLE products (...);
CREATE TABLE order_items (...);
CREATE TABLE user_roles (...);字段名
- 使用 snake_case 命名
- 使用 描述性名称
- 使用 标准后缀
| 字段类型 | 命名规则 | 示例 |
|---|---|---|
| 主键 | id | id |
| 外键 | {table}_id | user_id, product_id |
| 时间戳 | {action}_at | created_at, updated_at |
| 布尔值 | is_{condition} | is_active, is_deleted |
| 数量 | {name}_count | order_count |
| 金额 | {name}_amount | total_amount |
sql
-- ✅ 正确
CREATE TABLE users (
id BIGINT PRIMARY KEY,
user_name VARCHAR(100),
email_address VARCHAR(255),
is_active TINYINT(1),
created_at BIGINT,
updated_at BIGINT
);
CREATE TABLE orders (
id BIGINT PRIMARY KEY,
user_id BIGINT,
product_id BIGINT,
total_amount DECIMAL(10,2),
created_at BIGINT
);索引名
- 使用
idx_前缀 - 使用 字段名组合
sql
-- ✅ 正确
CREATE TABLE users (
id BIGINT PRIMARY KEY,
email VARCHAR(255),
status VARCHAR(50),
created_at BIGINT,
UNIQUE INDEX idx_email (email),
INDEX idx_status (status),
INDEX idx_created_at (created_at),
INDEX idx_status_created (status, created_at)
);关联表命名
- 使用 两个表名组合(字母顺序)
- 使用 下划线连接
sql
-- ✅ 正确 - user_roles (不是 role_users)
CREATE TABLE user_roles (
user_id BIGINT,
role_id BIGINT,
created_at BIGINT,
PRIMARY KEY (user_id, role_id),
INDEX idx_user_id (user_id),
INDEX idx_role_id (role_id)
);禁止的做法
- 禁止 使用驼峰命名(camelCase)
- 禁止 使用大写字母
- 禁止 使用保留字
- 禁止 使用拼音
sql
-- ❌ 错误
CREATE TABLE Users (...); -- 大写
CREATE TABLE userInfo (...); -- 驼峰
CREATE TABLE order (...); -- 保留字
CREATE TABLE yonghu (...); -- 拼音特殊场景
枚举字段
sql
-- ✅ 正确
CREATE TABLE orders (
id BIGINT PRIMARY KEY,
status VARCHAR(50) DEFAULT 'pending',
CHECK (status IN ('pending', 'paid', 'completed', 'cancelled'))
);JSON 字段
sql
-- ✅ 正确
CREATE TABLE users (
id BIGINT PRIMARY KEY,
settings_json JSON,
metadata JSON
);软删除字段
sql
-- ✅ 正确
CREATE TABLE users (
id BIGINT PRIMARY KEY,
name VARCHAR(100),
deleted_at BIGINT DEFAULT NULL,
INDEX idx_deleted_at (deleted_at)
);