Skip to content

数据库规范

Forge 使用 MySQL 8.0+ 作为主数据库。你在设计新表或修改字段时,必须遵循以下规范。

表命名

前缀用途示例
sys_系统管理表sys_usersys_rolesys_dict_type
biz_业务数据表biz_orderbiz_contract
act_Flowable 引擎表(框架管理)act_ru_task
forge_框架内部表forge_schema_history

必备字段

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

字段类型说明
idbigint主键
tenant_idbigint租户 ID,默认 1
create_bybigint创建人
create_timedatetime创建时间
create_deptbigint创建部门
update_bybigint更新人
update_timedatetime更新时间
del_flagbigint逻辑删除标记,0 未删除

建表示例:

sql
CREATE TABLE IF NOT EXISTS biz_order (
    id              BIGINT       NOT NULL COMMENT '主键',
    tenant_id       BIGINT       NOT NULL DEFAULT 1 COMMENT '租户ID',
    order_no        VARCHAR(64)  NOT NULL COMMENT '订单号',
    amount          BIGINT       NOT NULL DEFAULT 0 COMMENT '金额(分)',
    status          VARCHAR(20) NOT NULL DEFAULT '0' COMMENT '状态',
    create_by       BIGINT       NULL COMMENT '创建人',
    create_time     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    create_dept     BIGINT       NULL COMMENT '创建部门',
    update_by       BIGINT       NULL COMMENT '更新人',
    update_time     DATETIME     NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag        BIGINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除',
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';

字段类型选择

业务场景推荐类型说明
金额BIGINT单位,禁止用 float/double
时间DATETIME不用 timestamp
状态VARCHAR(20)字典值
布尔TINYINT0/1
主键BIGINT雪花算法生成
长文本TEXT不用 LONGTEXT
唯一编码VARCHAR(64)不用 int 自增

字符集与引擎

  • 字符集:utf8mb4
  • 排序规则:utf8mb4_general_ci
  • 存储引擎:InnoDB

索引规范

索引类型命名说明
普通索引idx_字段名idx_create_time
唯一索引uk_字段名uk_tenant_order_no
联合索引idx_字段1_字段2idx_tenant_status

唯一索引必须包含 tenant_iddel_flag

sql
CREATE UNIQUE INDEX uk_tenant_order_no
ON biz_order(tenant_id, order_no, del_flag);

禁止事项

  • 禁止使用外键约束
  • 禁止使用存储过程
  • 禁止使用数据库触发器
  • 禁止使用 SELECT *,必须显式指定字段
  • 禁止在表中存储密码明文

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架