Skip to content

数据库设计文档

本文档详细介绍了 Ape-Volo-Admin 项目的数据库表设计规范。

🗃️ 业务主库表结构

1. 用户

sql
create table sys_user
(
    id                   bigint       not null
        primary key,
    user_name            varchar(255) not null comment '用户名',
    nick_name            varchar(255) null comment '昵称',
    email                varchar(255) null comment '邮箱',
    enabled              tinyint(1)   not null comment '是否激活',
    password             varchar(255) not null comment '密码',
    dept_id              bigint       not null comment '部门',
    phone                varchar(11)  null comment '电话',
    avatar_path          varchar(255) null comment '头像路径',
    password_re_set_time datetime     null comment '最后修改密码时间',
    gender_code          int          not null comment '性别',
    tenant_id            int          null comment '租户ID',
    create_by            varchar(255) not null comment '创建者名称',
    create_time          datetime     not null comment '创建时间',
    update_by            varchar(255) null comment '更新者名称',
    update_time          datetime     null comment '最后更新时间',
    is_deleted           tinyint(1)   not null comment '是否已删除'
)
    comment '系统用户';

2. 角色

sql
create table sys_role
(
    id              bigint       not null
        primary key,
    name            varchar(255) not null comment '角色名称',
    level           int          not null comment '角色等级',
    description     varchar(255) null comment '描述',
    data_scope_type int          not null comment '数据权限',
    auth_code       varchar(255) not null comment '角色代码',
    create_by       varchar(255) not null comment '创建者名称',
    create_time     datetime     not null comment '创建时间',
    update_by       varchar(255) null comment '更新者名称',
    update_time     datetime     null comment '最后更新时间',
    is_deleted      tinyint(1)   not null comment '是否已删除'
)
    comment '角色';

3. 菜单

sql
create table sys_menu
(
    id             bigint          not null
        primary key,
    title          varchar(255)    not null comment '菜单标题',
    path           varchar(255)    null comment '组件路径',
    auth_code      varchar(255)    null comment '权限标识符',
    component      varchar(255)    null comment '组件',
    component_name varchar(255)    null comment '组件名称',
    parent_id      bigint          not null comment '父级菜单ID',
    sort           int default 999 not null comment '排序',
    icon           varchar(255)    null comment 'icon图标',
    menu_type      int             not null comment '菜单类型',
    enabled        tinyint(1)      not null comment '状态',
    keep_alive     tinyint(1)      not null comment '是否缓存',
    hidden         tinyint(1)      not null comment '是否隐藏',
    sub_count      int default 0   not null comment '子节点个数',
    badge_type     int             null comment '徽章类型',
    badge_text     varchar(255)    null comment '徽章文字',
    badge_style    varchar(255)    null comment '徽章样式',
    create_by      varchar(255)    not null comment '创建者名称',
    create_time    datetime        not null comment '创建时间',
    update_by      varchar(255)    null comment '更新者名称',
    update_time    datetime        null comment '最后更新时间',
    is_deleted     tinyint(1)      not null comment '是否已删除'
)
    comment '系统菜单';

4. 部门

sql
create table sys_department
(
    id          bigint          not null
        primary key,
    name        varchar(255)    not null comment '部门名称',
    parent_id   bigint          not null comment '父级部门ID',
    sort        int default 999 not null comment '排序',
    enabled     tinyint(1)      not null comment '是否启用',
    sub_count   int default 0   not null comment '子节点个数',
    create_by   varchar(255)    not null comment '创建者名称',
    create_time datetime        not null comment '创建时间',
    update_by   varchar(255)    null comment '更新者名称',
    update_time datetime        null comment '最后更新时间',
    is_deleted  tinyint(1)      not null comment '是否已删除'
)
    comment '部门';

5. 岗位

sql
create table sys_job
(
    id          bigint          not null
        primary key,
    name        varchar(255)    not null comment '名称',
    sort        int default 999 not null comment '排序',
    enabled     tinyint(1)      not null comment '是否激活',
    create_by   varchar(255)    not null comment '创建者名称',
    create_time datetime        not null comment '创建时间',
    update_by   varchar(255)    null comment '更新者名称',
    update_time datetime        null comment '最后更新时间',
    is_deleted  tinyint(1)      not null comment '是否已删除'
)
    comment '岗位';

6. API

sql
create table sys_apis
(
    id          bigint       not null
        primary key,
    `group`     varchar(255) not null comment '组',
    url         varchar(255) not null comment '路径',
    description varchar(255) null comment '描述',
    method      varchar(255) not null comment '请求方法',
    create_by   varchar(255) not null comment '创建者名称',
    create_time datetime     not null comment '创建时间',
    update_by   varchar(255) null comment '更新者名称',
    update_time datetime     null comment '最后更新时间',
    is_deleted  tinyint(1)   not null comment '是否已删除'
)
    comment 'Api路由';

7. 字典

sql
create table sys_dict
(
    id          bigint       not null
        primary key,
    dict_type   int          not null comment '字典类型',
    name        varchar(255) not null comment '字典名称',
    description varchar(255) null comment '描述',
    create_by   varchar(255) null comment '创建者名称',
    create_time datetime     null comment '创建时间',
    update_by   varchar(255) null comment '更新者名称',
    update_time datetime     null comment '最后更新时间',
    is_deleted  tinyint(1)   not null comment '是否已删除'
)
    comment '字典';

8. 字典详情

sql
create table sys_dict_detail
(
    id          bigint          not null
        primary key,
    dict_id     bigint          not null comment '字典ID',
    label       varchar(255)    not null comment '字典标签',
    value       varchar(255)    not null comment '字典值',
    dict_sort   int default 999 not null comment '排序',
    create_by   varchar(255)    null comment '创建者名称',
    create_time datetime        null comment '创建时间',
    update_by   varchar(255)    null comment '更新者名称',
    update_time datetime        null comment '最后更新时间',
    is_deleted  tinyint(1)      not null comment '是否已删除'
)
    comment '字典详情';

9. 作业

sql
create table sys_quartz_job
(
    id                  bigint       not null
        primary key,
    task_name           varchar(255) not null comment '任务名称',
    task_group          varchar(255) not null comment '任务分组',
    cron                varchar(255) null comment 'cron 表达式',
    assembly_name       varchar(255) not null comment '程序集名称',
    class_name          varchar(255) not null comment '任务所在类',
    description         varchar(255) null comment '任务描述',
    principal           varchar(255) null comment '任务负责人',
    alert_email         varchar(255) null comment '告警邮箱',
    pause_after_failure tinyint(1)   not null comment '任务失败后是否暂停',
    run_times           int          not null comment '执行次数',
    start_time          datetime     null comment '开始时间',
    end_time            datetime     null comment '结束时间',
    trigger_type        int          not null comment '触发器类型(0、simple 1、cron)',
    interval_second     int          null comment '执行间隔时间, 秒为单位',
    cycle_run_times     int          null comment '循环执行次数',
    enabled             tinyint(1)   not null comment '是否启用',
    run_params          varchar(255) null comment '执行传参',
    create_by           varchar(255) not null comment '创建者名称',
    create_time         datetime     not null comment '创建时间',
    update_by           varchar(255) null comment '更新者名称',
    update_time         datetime     null comment '最后更新时间',
    is_deleted          tinyint(1)   not null comment '是否已删除'
)
    comment '系统作业调度';

10. 参数

sql
create table sys_parameter
(
    id          bigint       not null
        primary key,
    name        varchar(255) not null comment '名称',
    value       varchar(255) not null comment '值',
    enabled     tinyint(1)   not null comment '是否启用',
    description varchar(255) null comment '描述',
    create_by   varchar(255) null comment '创建者名称',
    create_time datetime     null comment '创建时间',
    update_by   varchar(255) null comment '更新者名称',
    update_time datetime     null comment '最后更新时间',
    is_deleted  tinyint(1)   not null comment '是否已删除'
)
    comment '系统设置';

11. 密钥

sql
create table sys_app_secret
(
    id             bigint       not null
        primary key,
    app_id         varchar(255) not null comment '应用ID',
    app_secret_key varchar(255) not null comment '应用秘钥',
    app_name       varchar(255) not null comment '应用名称',
    remark         varchar(255) null comment '备注',
    create_by      varchar(255) not null comment '创建者名称',
    create_time    datetime     not null comment '创建时间',
    update_by      varchar(255) null comment '更新者名称',
    update_time    datetime     null comment '最后更新时间',
    is_deleted     tinyint(1)   not null comment '是否已删除'
)
    comment '三方应用密钥';

12. 文件

sql
create table sys_file_record
(
    id                   bigint       not null
        primary key,
    description          varchar(255) null comment '文件描述',
    content_type         varchar(255) null comment '文件类型',
    content_type_name    varchar(255) null comment '文件类别',
    content_type_name_en varchar(255) null comment '文件类别英文名称',
    original_name        varchar(255) null comment '文件原名称',
    new_name             varchar(255) null comment '文件新名称',
    file_path            varchar(255) null comment '文件存储路径',
    size                 varchar(255) null comment '文件大小',
    create_by            varchar(255) not null comment '创建者名称',
    create_time          datetime     not null comment '创建时间',
    update_by            varchar(255) null comment '更新者名称',
    update_time          datetime     null comment '最后更新时间',
    is_deleted           tinyint(1)   not null comment '是否已删除'
)
    comment '文件记录';

13. 租户

sql
create table sys_tenant
(
    id                bigint       not null
        primary key,
    tenant_id         int          not null comment '租户Id',
    name              varchar(255) not null comment '名称',
    description       varchar(255) null comment '描述',
    tenant_type       int          not null comment '租户类型',
    config_id         varchar(255) null comment '库Id',
    db_type           int          null comment '数据库类型',
    connection_string varchar(255) null comment '数据库连接',
    create_by         varchar(255) not null comment '创建者名称',
    create_time       datetime     not null comment '创建时间',
    update_by         varchar(255) null comment '更新者名称',
    update_time       datetime     null comment '最后更新时间',
    is_deleted        tinyint(1)   not null comment '是否已删除'
)
    comment '租户';

14. Token 黑名单

sql
create table sys_token_blacklist
(
    id           bigint       not null
        primary key,
    access_token varchar(255) not null comment '令牌 登录token的MD5值',
    create_by    varchar(255) not null comment '创建者名称',
    create_time  datetime     not null comment '创建时间',
    update_by    varchar(255) null comment '更新者名称',
    update_time  datetime     null comment '最后更新时间',
    is_deleted   tinyint(1)   not null comment '是否已删除'
)
    comment 'Token黑名单';

15. 邮箱账户

sql
create table email_account
(
    id                      bigint       not null
        primary key,
    email                   varchar(255) not null comment '电子邮件地址',
    display_name            varchar(255) not null comment '电子邮件显示名称',
    host                    varchar(255) not null comment '电子邮件主机',
    port                    int          not null comment '电子邮件端口',
    user_name               varchar(255) not null comment '电子邮件用户名',
    password                varchar(255) null comment '电子邮件密码',
    enable_ssl              tinyint(1)   not null comment '是否SSL',
    use_default_credentials tinyint(1)   not null comment '是否与请求一起发送应用程序的默认系统凭据',
    create_by               varchar(255) not null comment '创建者名称',
    create_time             datetime     not null comment '创建时间',
    update_by               varchar(255) null comment '更新者名称',
    update_time             datetime     null comment '最后更新时间',
    is_deleted              tinyint(1)   not null comment '是否已删除'
)
    comment '邮件账户';

16. 邮件队列

sql
create table queued_email
(
    id               bigint       not null
        primary key,
    `from`           varchar(255) not null comment '发件邮箱',
    from_name        varchar(255) null comment '发件人名称',
    `to`             varchar(255) not null comment '收件邮箱',
    to_name          varchar(255) null comment '收件人名称',
    reply_to         varchar(255) null comment '回复邮箱',
    reply_to_name    varchar(255) null comment '回复人名称',
    priority         int          not null comment '优先级',
    cc               varchar(255) null comment '抄送',
    bcc              varchar(255) null comment '密件抄送',
    subject          varchar(255) null comment '标题',
    body             longtext     not null comment '内容',
    sent_tries       int          not null comment '发送上限次数',
    is_send          tinyint(1)   not null comment '是否已发送',
    send_time        datetime     null comment '发送时间',
    email_account_id bigint       not null comment '发件邮箱ID',
    create_by        varchar(255) not null comment '创建者名称',
    create_time      datetime     not null comment '创建时间',
    update_by        varchar(255) null comment '更新者名称',
    update_time      datetime     null comment '最后更新时间',
    is_deleted       tinyint(1)   not null comment '是否已删除'
)
    comment '邮件队列';

17. 邮件模板

sql
create table email_message_template
(
    id                  bigint       not null
        primary key,
    name                varchar(255) not null comment '模板名称',
    bcc_email_addresses varchar(255) null comment '抄送邮箱地址',
    subject             varchar(255) null comment '主题',
    body                longtext     not null comment '内容',
    enabled             tinyint(1)   not null comment '是否启用',
    email_account_id    bigint       not null comment '邮箱账户标识符',
    create_by           varchar(255) not null comment '创建者名称',
    create_time         datetime     not null comment '创建时间',
    update_by           varchar(255) null comment '更新者名称',
    update_time         datetime     null comment '最后更新时间',
    is_deleted          tinyint(1)   not null comment '是否已删除'
)
    comment '邮件模板';

18. 用户与角色关联

sql
create table sys_user_role
(
    user_id bigint not null comment '用户ID',
    role_id bigint not null comment '角色ID',
    primary key (user_id, role_id)
)
    comment '用户角色关联';

19. 用户与岗位关联

sql
create table sys_user_job
(
    user_id bigint not null comment '用户ID',
    job_id  bigint not null comment '岗位ID',
    primary key (user_id, job_id)
)
    comment '用户岗位关联';

20. 角色与 API 路由关联

sql
create table sys_role_apis
(
    role_id bigint not null comment '角色ID',
    apis_id bigint not null comment 'api ID',
    primary key (role_id, apis_id)
)
    comment '角色Apis关联';

21. 角色与部门关联

sql
create table sys_role_dept
(
    role_id bigint not null comment '角色ID',
    dept_id bigint not null comment '部门ID',
    primary key (role_id, dept_id)
)
    comment '角色部门关联';

22. 角色与菜单关联

sql
create table sys_role_menu
(
    role_id bigint not null comment '角色ID',
    menu_id bigint not null comment '菜单ID',
    primary key (role_id, menu_id)
)
    comment '角色菜单关联';

🗃️ 日志库表结构

1. 操作日志

sql
create table log_operate_{yyyyMM}
(
    id                 bigint           not null
        primary key,
    area               varchar(255)     null comment '区域',
    controller         varchar(255)     null comment '控制器',
    action             varchar(255)     null comment '方法',
    method             varchar(255)     null comment '请求方式',
    description        varchar(255)     null comment '/描述',
    request_url        varchar(255)     null comment '请求url',
    request_parameters longtext         null comment '请求参数',
    response_data      longtext         null comment '响应数据',
    execution_duration bigint default 0 not null comment '执行耗时(毫秒)',
    request_ip         varchar(255)     null comment '请求IP',
    ip_address         varchar(255)     null comment 'IP所属真实地址',
    user_agent         varchar(255)     null comment '用户代理信息',
    operating_system   varchar(255)     null comment '操作系统',
    device_type        varchar(255)     null comment '设备类型',
    browser_name       varchar(255)     null comment '浏览器名称',
    version            varchar(255)     null comment '浏览器版本',
    create_time        datetime         not null comment '创建时间',
    create_by          varchar(255)     not null comment '创建者名称',
    update_by          varchar(255)     null comment '更新者名称',
    update_time        datetime         null comment '最后更新时间',
    is_deleted         tinyint(1)       not null comment '是否已删除'
)
    comment '操作日志';

2. 异常日志

sql
create table log_exception_{yyyyMM}
(
    id                     bigint       not null
        primary key,
    area                   varchar(255) null comment '区域',
    controller             varchar(255) null comment '控制器',
    action                 varchar(255) null comment '方法',
    method                 varchar(255) null comment '请求方式',
    description            varchar(255) null comment '描述',
    request_url            varchar(255) null comment '请求url',
    request_parameters     longtext     null comment '请求参数',
    exception_message      varchar(255) null comment '异常短信息',
    exception_message_full longtext     null comment '异常完整信息',
    exception_stack        longtext     null comment '异常堆栈信息',
    log_level              int          not null comment '等级',
    request_ip             varchar(255) null comment '请求ip',
    ip_address             varchar(255) null comment 'ip所属真实地址',
    user_agent             varchar(255) null comment '用户代理信息',
    operating_system       varchar(255) null comment '操作系统',
    device_type            varchar(255) null comment '设备类型',
    browser_name           varchar(255) null comment '浏览器名称',
    version                varchar(255) null comment '浏览器版本',
    create_time            datetime     not null comment '创建时间',
    create_by              varchar(255) not null comment '创建者名称',
    update_by              varchar(255) null comment '更新者名称',
    update_time            datetime     null comment '最后更新时间',
    is_deleted             tinyint(1)   not null comment '是否已删除'
)
    comment '异常日志';

3. SQL 日志

sql
create table log_sql_{yyyyMM}
(
    id               bigint       not null
        primary key,
    create_by        varchar(255) null comment '创建者名称',
    create_time      datetime     not null comment '创建时间',
    level            varchar(255) null comment '等级',
    message          longtext     null comment '消息',
    message_template longtext     null comment '消息模板',
    properties       longtext     null comment '属性'
)
    comment 'SQL日志';

4. 作业执行日志

sql
create table log_quartz_net_{yyyyMM}
(
    id                 bigint           not null
        primary key,
    task_id            bigint           not null comment '任务Id',
    task_name          varchar(255)     null comment '任务名称',
    task_group         varchar(255)     null comment '任务分组',
    assembly_name      varchar(255)     null comment '程序集名称',
    class_name         varchar(255)     null comment '任务所在类',
    cron               varchar(255)     null comment 'cron 表达式',
    exception_detail   varchar(255)     null comment '异常详情',
    execution_duration bigint default 0 not null comment '执行耗时(毫秒)',
    run_params         varchar(255)     null comment '执行传参',
    is_success         tinyint(1)       not null comment '是否成功',
    create_by          varchar(255)     not null comment '创建者名称',
    create_time        datetime         not null comment '创建时间',
    update_by          varchar(255)     null comment '更新者名称',
    update_time        datetime         null comment '最后更新时间',
    is_deleted         tinyint(1)       not null comment '是否已删除'
)
    comment '作业日志';

5. 信息日志

sql
create table log_information_{yyyyMM}
(
    id               bigint       not null
        primary key,
    create_by        varchar(255) null comment '创建者名称',
    create_time      datetime     not null comment '创建时间',
    level            varchar(255) null comment '等级',
    message          longtext     null comment '消息',
    message_template longtext     null comment '消息模板',
    properties       longtext     null comment '属性'
)
    comment '信息日志';

6. 告警日志

sql
create table log_warning_{yyyyMM}
(
    id               bigint       not null
        primary key,
    create_by        varchar(255) null comment '创建者名称',
    create_time      datetime     not null comment '创建时间',
    level            varchar(255) null comment '等级',
    message          longtext     null comment '消息',
    message_template longtext     null comment '消息模板',
    properties       longtext     null comment '属性'
)
    comment '警告日志';

7. 错误日志

sql
create table log_error_{yyyyMM}
(
    id               bigint       not null
        primary key,
    create_by        varchar(255) null comment '创建者名称',
    create_time      datetime     not null comment '创建时间',
    level            varchar(255) null comment '等级',
    message          longtext     null comment '消息',
    message_template longtext     null comment '消息模板',
    properties       longtext     null comment '属性'
)
    comment '错误日志';

8. 致命错误日志

sql
create table log_fatal_{yyyyMM}
(
    id               bigint       not null
        primary key,
    create_by        varchar(255) null comment '创建者名称',
    create_time      datetime     not null comment '创建时间',
    level            varchar(255) null comment '等级',
    message          longtext     null comment '消息',
    message_template longtext     null comment '消息模板',
    properties       longtext     null comment '属性'
)
    comment '失败日志';

版权所有 © 2021-2026 ApeVolo-Team