Skip to content

3.2 数据库建表 ​

概述

建表是模块开发的第一步。所有表必须包含公共字段(id、软删除、审计字段),这是 BaseModel 自动处理的基础。

公共字段规范 ​

所有业务表必须包含以下公共字段:

sql
-- 公共字段(每个表都必须包含)
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 '更新时间'

为什么必须包含这些字段?

  • is_delete:BaseModel 的全局查询范围 soft_delete 会自动过滤 is_delete=1 的数据
  • create_user / create_time:BaseModel 的 onBeforeInsert 事件自动填充
  • update_user / update_time:BaseModel 的 onBeforeUpdate 事件自动填充

建表 SQL 示例(example 模块) ​

sql
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 属性说明
nameVARCHAR(200)pageLikeFieldsLIKE 模糊搜索
typeTINYINT(1)pageEqFields + serializeMaps精确匹配 + 枚举翻译
statusTINYINT(1)pageEqFields + serializeMaps精确匹配 + 枚举翻译
sortINTpageOrderBy默认排序字段
avatarVARCHAR(500)fileFields文件字段,自动处理

常见字段类型参考 ​

用途推荐类型示例
主键INT AUTO_INCREMENTid INT PRIMARY KEY AUTO_INCREMENT
外键INT DEFAULT 0category_id INT DEFAULT 0
短文本VARCHAR(n)name VARCHAR(200)
长文本TEXTcontent TEXT
布尔值TINYINT(1)status TINYINT(1) DEFAULT 0
整数INTsort INT DEFAULT 0
日期时间DATETIMEcreate_time DATETIME
文件路径VARCHAR(500)avatar VARCHAR(500)

小蚂蚁云团队 · 提供技术支持