3.3 KiB
3.3 KiB
3.2 数据库建表
:::tip 概述 建表是模块开发的第一步。所有表必须包含公共字段(id、软删除、审计字段),这是 BaseModel 自动处理的基础。 :::
公共字段规范
所有业务表必须包含以下公共字段:
-- 公共字段(每个表都必须包含)
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
is_delete TINYINT(1) DEFAULT 0 COMMENT '软删除 0=正常 1=已删除',
create_user VARCHAR(50) DEFAULT '' COMMENT '创建人',
create_time DATETIME COMMENT '创建时间',
update_user VARCHAR(50) DEFAULT '' COMMENT '更新人',
update_time DATETIME COMMENT '更新时间'
:::warning 为什么必须包含这些字段?
is_delete:BaseModel 的全局查询范围soft_delete会自动过滤is_delete=1的数据create_user/create_time:BaseModel 的onBeforeInsert事件自动填充update_user/update_time:BaseModel 的onBeforeUpdate事件自动填充 :::
建表 SQL 示例(example 模块)
CREATE TABLE think_example (
-- 主键
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
-- 业务字段
name VARCHAR(200) NOT NULL COMMENT '案例名称',
type TINYINT(1) DEFAULT 0 COMMENT '案例类型(字典 example_type)',
status TINYINT(1) DEFAULT 0 COMMENT '案例状态(字典 example_status)',
sort INT DEFAULT 0 COMMENT '排序值(越小越靠前)',
avatar VARCHAR(500) DEFAULT '' COMMENT '头像(文件路径)',
-- 公共字段(必须)
is_delete TINYINT(1) DEFAULT 0 COMMENT '软删除 0=正常 1=已删除',
create_user VARCHAR(50) DEFAULT '' COMMENT '创建人',
create_time DATETIME COMMENT '创建时间',
update_user VARCHAR(50) DEFAULT '' COMMENT '更新人',
update_time DATETIME COMMENT '更新时间',
-- 索引
INDEX idx_type (type),
INDEX idx_status (status),
INDEX idx_sort (sort)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='案例演示表';
字段与 Logic 属性对应关系
| 数据库字段 | 类型 | Logic 属性 | 说明 |
|---|---|---|---|
name |
VARCHAR(200) | pageLikeFields |
LIKE 模糊搜索 |
type |
TINYINT(1) | pageEqFields + serializeMaps |
精确匹配 + 枚举翻译 |
status |
TINYINT(1) | pageEqFields + serializeMaps |
精确匹配 + 枚举翻译 |
sort |
INT | pageOrderBy |
默认排序字段 |
avatar |
VARCHAR(500) | fileFields |
文件字段,自动处理 |
常见字段类型参考
| 用途 | 推荐类型 | 示例 |
|---|---|---|
| 主键 | INT AUTO_INCREMENT |
id INT PRIMARY KEY AUTO_INCREMENT |
| 外键 | INT DEFAULT 0 |
category_id INT DEFAULT 0 |
| 短文本 | VARCHAR(n) |
name VARCHAR(200) |
| 长文本 | TEXT |
content TEXT |
| 布尔值 | TINYINT(1) |
status TINYINT(1) DEFAULT 0 |
| 整数 | INT |
sort INT DEFAULT 0 |
| 日期时间 | DATETIME |
create_time DATETIME |
| 文件路径 | VARCHAR(500) |
avatar VARCHAR(500) |