数据库设计文档
本文档详细介绍了 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 '失败日志';
