Files
easygoadmin-wiki/EasyGoAdmin_Iris_EleVue/zh/guide/database.md
T
2026-10-20 21:19:44 +08:00

3.3 KiB
Raw Blame History

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)