# Freedom Admin 管理系统 SQLER 图 ## 数据库关系图 ```mermaid 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 | ## 索引设计 ### 主键索引 ```sql -- 所有表的主键索引 PRIMARY KEY (id) ``` ### 唯一索引 ```sql -- 用户表唯一索引 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) ``` ### 外键索引 ```sql -- 用户角色关联表外键索引 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. 用户-角色-权限关系模型 ```mermaid graph TB U[用户] --> UR[用户角色] R[角色] --> UR R --> RP[角色权限] P[权限] --> RP subgraph "基础实体" U R P D[部门] end subgraph "关联关系" UR RP end D --> U ``` ### 2. 权限层级结构 ```mermaid graph TD A[根权限] --> B[模块权限] B --> C[菜单权限] C --> D[按钮权限] B --> E[模块权限2] E --> F[菜单权限2] F --> G[按钮权限2] ``` ### 3. 部门层级结构 ```mermaid graph TD A[总公司] --> B[分公司1] A --> C[分公司2] B --> D[部门A] B --> E[部门B] C --> F[部门C] C --> G[部门D] ``` ## 查询优化建议 ### 1. 常用查询SQL ```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 管理系统的数据库结构设计,包括表关系、字段定义、索引设计和数据完整性约束。