379 lines
11 KiB
Markdown
379 lines
11 KiB
Markdown
# 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 管理系统的数据库结构设计,包括表关系、字段定义、索引设计和数据完整性约束。 |