Files
freedom-admin/SQLER图.md
T
2026-08-19 14:45:24 +08:00

11 KiB

Freedom Admin 管理系统 SQLER 图

数据库关系图

erDiagram
    %% 用户表
    TSysUser {
        bigint id PK
        varchar username
        varchar password
        varchar encodeType
        varchar userType
        varchar nickname
        varchar avatar
        varchar phone
        varchar email
        varchar signature
        int status
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    %% 角色表
    TSysRole {
        bigint id PK
        varchar roleName
        varchar roleCode
        varchar description
        int status
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    %% 权限表
    TSysPermission {
        bigint id PK
        varchar permissionName
        varchar permissionCode
        varchar description
        varchar url
        varchar method
        int type
        bigint parentId
        int sort
        int status
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    %% 部门表
    TSysDept {
        bigint id PK
        varchar deptName
        varchar deptCode
        varchar description
        bigint parentId
        int sort
        int status
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    %% 关联表
    TSysUserRole {
        bigint id PK
        bigint userId FK
        bigint roleId FK
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    TSysRolePermission {
        bigint id PK
        bigint roleId FK
        bigint permissionId FK
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    %% 生成器配置表
    GeneratorConfig {
        bigint id PK
        varchar tableName
        varchar tableComment
        varchar author
        varchar packageName
        varchar moduleName
        varchar functionName
        varchar entityName
        varchar mapperName
        varchar serviceName
        varchar serviceImplName
        varchar controllerName
        varchar createBy
        datetime createDate
        varchar updateBy
        datetime updateDate
        boolean delFlag
    }
    
    %% 关系定义
    TSysUser ||--o{ TSysUserRole : "拥有"
    TSysRole ||--o{ TSysUserRole : "分配"
    TSysRole ||--o{ TSysRolePermission : "授权"
    TSysPermission ||--o{ TSysRolePermission : "被授予"
    TSysDept ||--o{ TSysUser : "属于"
    TSysPermission ||--o{ TSysPermission : "层级关系"
    TSysDept ||--o{ TSysDept : "层级关系"

数据字典

表结构详细信息

1. 用户表 (t_sys_user)

字段名 数据类型 长度 允许空 主键 说明 默认值
id bigint 20 NO PK 主键ID 自增
username varchar 50 NO 登录用户名
password varchar 255 NO 加密密码
encodeType varchar 20 YES 加密方式 MD5
userType varchar 20 YES 用户类型
nickname varchar 50 YES 用户昵称
avatar varchar 255 YES 头像URL
phone varchar 20 YES 手机号
email varchar 100 YES 邮箱
signature varchar 255 YES 个性签名
status int 11 YES 状态(0禁用,1启用) 1
createBy varchar 50 YES 创建人
createDate datetime YES 创建时间
updateBy varchar 50 YES 更新人
updateDate datetime YES 更新时间
delFlag boolean YES 删除标记 0

2. 角色表 (t_sys_role)

字段名 数据类型 长度 允许空 主键 说明 默认值
id bigint 20 NO PK 主键ID 自增
roleName varchar 50 NO 角色名称
roleCode varchar 50 NO 角色编码
description varchar 255 YES 角色描述
status int 11 YES 状态(0禁用,1启用) 1
createBy varchar 50 YES 创建人
createDate datetime YES 创建时间
updateBy varchar 50 YES 更新人
updateDate datetime YES 更新时间
delFlag boolean YES 删除标记 0

3. 权限表 (t_sys_permission)

字段名 数据类型 长度 允许空 主键 说明 默认值
id bigint 20 NO PK 主键ID 自增
permissionName varchar 50 NO 权限名称
permissionCode varchar 50 NO 权限编码
description varchar 255 YES 权限描述
url varchar 255 YES 请求URL
method varchar 10 YES 请求方法
type int 11 YES 权限类型(1菜单,2按钮)
parentId bigint 20 YES 父级权限ID 0
sort int 11 YES 排序号 0
status int 11 YES 状态(0禁用,1启用) 1
createBy varchar 50 YES 创建人
createDate datetime YES 创建时间
updateBy varchar 50 YES 更新人
updateDate datetime YES 更新时间
delFlag boolean YES 删除标记 0

4. 部门表 (t_sys_dept)

字段名 数据类型 长度 允许空 主键 说明 默认值
id bigint 20 NO PK 主键ID 自增
deptName varchar 50 NO 部门名称
deptCode varchar 50 NO 部门编码
description varchar 255 YES 部门描述
parentId bigint 20 YES 父级部门ID 0
sort int 11 YES 排序号 0
status int 11 YES 状态(0禁用,1启用) 1
createBy varchar 50 YES 创建人
createDate datetime YES 创建时间
updateBy varchar 50 YES 更新人
updateDate datetime YES 更新时间
delFlag boolean YES 删除标记 0

5. 用户角色关联表 (t_sys_user_role)

字段名 数据类型 长度 允许空 主键 说明 默认值
id bigint 20 NO PK 主键ID 自增
userId bigint 20 NO FK 用户ID
roleId bigint 20 NO FK 角色ID
createBy varchar 50 YES 创建人
createDate datetime YES 创建时间
updateBy varchar 50 YES 更新人
updateDate datetime YES 更新时间
delFlag boolean YES 删除标记 0

6. 角色权限关联表 (t_sys_role_permission)

字段名 数据类型 长度 允许空 主键 说明 默认值
id bigint 20 NO PK 主键ID 自增
roleId bigint 20 NO FK 角色ID
permissionId bigint 20 NO FK 权限ID
createBy varchar 50 YES 创建人
createDate datetime YES 创建时间
updateBy varchar 50 YES 更新人
updateDate datetime YES 更新时间
delFlag boolean YES 删除标记 0

索引设计

主键索引

-- 所有表的主键索引
PRIMARY KEY (id)

唯一索引

-- 用户表唯一索引
UNIQUE KEY uk_username (username),
UNIQUE KEY uk_phone (phone),
UNIQUE KEY uk_email (email)

-- 角色表唯一索引  
UNIQUE KEY uk_role_code (roleCode)

-- 权限表唯一索引
UNIQUE KEY uk_permission_code (permissionCode)

-- 部门表唯一索引
UNIQUE KEY uk_dept_code (deptCode)

外键索引

-- 用户角色关联表外键索引
KEY idx_user_id (userId),
KEY idx_role_id (roleId)

-- 角色权限关联表外键索引
KEY idx_role_id (roleId), 
KEY idx_permission_id (permissionId)

-- 权限表层级索引
KEY idx_parent_id (parentId)

-- 部门表层级索引
KEY idx_parent_id (parentId)

数据关系说明

1. 用户-角色-权限关系模型

graph TB
    U[用户] --> UR[用户角色]
    R[角色] --> UR
    R --> RP[角色权限]
    P[权限] --> RP
    
    subgraph "基础实体"
        U
        R  
        P
        D[部门]
    end
    
    subgraph "关联关系"
        UR
        RP
    end
    
    D --> U

2. 权限层级结构

graph TD
    A[根权限] --> B[模块权限]
    B --> C[菜单权限]
    C --> D[按钮权限]
    
    B --> E[模块权限2]
    E --> F[菜单权限2]
    F --> G[按钮权限2]

3. 部门层级结构

graph TD
    A[总公司] --> B[分公司1]
    A --> C[分公司2]
    
    B --> D[部门A]
    B --> E[部门B]
    
    C --> F[部门C]
    C --> G[部门D]

查询优化建议

1. 常用查询SQL

-- 查询用户权限
SELECT p.* FROM t_sys_user u 
JOIN t_sys_user_role ur ON u.id = ur.user_id
JOIN t_sys_role r ON ur.role_id = r.id  
JOIN t_sys_role_permission rp ON r.id = rp.role_id
JOIN t_sys_permission p ON rp.permission_id = p.id
WHERE u.id = ? AND u.del_flag = 0 AND r.del_flag = 0 AND p.del_flag = 0

-- 查询部门层级
WITH RECURSIVE dept_tree AS (
    SELECT * FROM t_sys_dept WHERE id = ?
    UNION ALL
    SELECT d.* FROM t_sys_dept d
    JOIN dept_tree dt ON d.parent_id = dt.id
)
SELECT * FROM dept_tree WHERE del_flag = 0

2. 性能优化建议

  1. 索引优化:为频繁查询的字段建立合适索引
  2. 分页查询:使用MyBatis-Plus分页插件
  3. 逻辑删除:使用del_flag字段进行软删除
  4. 数据归档:定期归档历史数据

数据完整性约束

1. 实体完整性

  • 所有表主键ID唯一且非空
  • 通过自增方式保证主键唯一性

2. 参照完整性

  • 用户角色关联表引用用户表和角色表
  • 角色权限关联表引用角色表和权限表
  • 外键约束确保数据一致性

3. 域完整性

  • 状态字段使用枚举值约束
  • 时间字段使用标准datetime格式
  • 字符字段长度限制防止溢出

4. 业务完整性

  • 逻辑删除保证数据可恢复
  • 创建时间和更新时间的自动维护
  • 创建人和更新人的记录追踪

这个SQLER图详细描述了 Freedom Admin 管理系统的数据库结构设计,包括表关系、字段定义、索引设计和数据完整性约束。