291 lines
8.9 KiB
Markdown
291 lines
8.9 KiB
Markdown
|
|
# 校园思政新闻平台 - ER关系图
|
|||
|
|
|
|||
|
|
## 核心模块关系图
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
erDiagram
|
|||
|
|
%% 用户体系
|
|||
|
|
tb_sys_user ||--|| tb_sys_user_info : "1对1"
|
|||
|
|
tb_sys_user ||--o{ tb_sys_login_log : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_sys_user_dept_role : "1对多"
|
|||
|
|
|
|||
|
|
%% 权限体系
|
|||
|
|
tb_sys_dept ||--o{ tb_sys_dept : "父子关系"
|
|||
|
|
tb_sys_dept ||--o{ tb_sys_dept_role : "1对多"
|
|||
|
|
tb_sys_role ||--o{ tb_sys_dept_role : "1对多"
|
|||
|
|
tb_sys_role ||--o{ tb_sys_user_dept_role : "1对多"
|
|||
|
|
tb_sys_role ||--o{ tb_sys_role_permission : "1对多"
|
|||
|
|
tb_sys_permission ||--o{ tb_sys_role_permission : "1对多"
|
|||
|
|
tb_sys_permission ||--o{ tb_sys_menu_permission : "1对多"
|
|||
|
|
tb_sys_menu ||--o{ tb_sys_menu : "父子关系"
|
|||
|
|
tb_sys_menu ||--o{ tb_sys_menu_permission : "1对多"
|
|||
|
|
|
|||
|
|
%% 资源体系
|
|||
|
|
tb_resource_category ||--o{ tb_resource_category : "父子关系"
|
|||
|
|
tb_resource_category ||--o{ tb_resource : "1对多"
|
|||
|
|
tb_resource ||--o{ tb_resource_tag : "1对多"
|
|||
|
|
tb_resource ||--o| tb_resource_recommend : "1对1"
|
|||
|
|
tb_resource ||--o| tb_banner : "1对1"
|
|||
|
|
tb_tag ||--o{ tb_resource_tag : "1对多"
|
|||
|
|
|
|||
|
|
%% 课程体系
|
|||
|
|
tb_course ||--o{ tb_course_chapter : "1对多"
|
|||
|
|
tb_course ||--o{ tb_course_tag : "1对多"
|
|||
|
|
tb_course ||--o{ tb_course_dept : "1对多"
|
|||
|
|
tb_tag ||--o{ tb_course_tag : "1对多"
|
|||
|
|
tb_sys_dept ||--o{ tb_course_dept : "1对多"
|
|||
|
|
|
|||
|
|
%% 学习体系
|
|||
|
|
tb_learning_task ||--o{ tb_task_resource : "1对多"
|
|||
|
|
tb_learning_task ||--o{ tb_task_course : "1对多"
|
|||
|
|
tb_learning_task ||--o{ tb_task_user : "1对多"
|
|||
|
|
tb_resource ||--o{ tb_task_resource : "1对多"
|
|||
|
|
tb_course ||--o{ tb_task_course : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_task_user : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_learning_record : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_learning_statistics : "1对多"
|
|||
|
|
|
|||
|
|
%% 个人中心
|
|||
|
|
tb_sys_user ||--o{ tb_user_collection : "1对多"
|
|||
|
|
tb_sys_user ||--|| tb_user_points : "1对1"
|
|||
|
|
tb_sys_user ||--o{ tb_points_record : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_user_achievement : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_user_browse_record : "1对多"
|
|||
|
|
tb_achievement ||--o{ tb_user_achievement : "1对多"
|
|||
|
|
|
|||
|
|
%% 智能体
|
|||
|
|
tb_sys_user ||--o{ tb_ai_conversation : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_ai_upload_file : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_ai_usage_statistics : "1对多"
|
|||
|
|
tb_ai_conversation ||--o{ tb_ai_message : "1对多"
|
|||
|
|
|
|||
|
|
%% 系统
|
|||
|
|
tb_sys_user ||--o{ tb_sys_operation_log : "1对多"
|
|||
|
|
tb_sys_user ||--o{ tb_sys_notification : "1对多"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 用户权限体系详细关系
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
User[用户 tb_sys_user]
|
|||
|
|
UserInfo[用户信息 tb_sys_user_info]
|
|||
|
|
UDR[用户部门角色 tb_sys_user_dept_role]
|
|||
|
|
Dept[部门 tb_sys_dept]
|
|||
|
|
Role[角色 tb_sys_role]
|
|||
|
|
RolePerm[角色权限 tb_sys_role_permission]
|
|||
|
|
Perm[权限 tb_sys_permission]
|
|||
|
|
MenuPerm[菜单权限 tb_sys_menu_permission]
|
|||
|
|
Menu[菜单 tb_sys_menu]
|
|||
|
|
|
|||
|
|
User -->|1:1| UserInfo
|
|||
|
|
User -->|1:N| UDR
|
|||
|
|
Dept -->|1:N| UDR
|
|||
|
|
Role -->|1:N| UDR
|
|||
|
|
Role -->|1:N| RolePerm
|
|||
|
|
Perm -->|1:N| RolePerm
|
|||
|
|
Perm -->|1:N| MenuPerm
|
|||
|
|
Menu -->|1:N| MenuPerm
|
|||
|
|
|
|||
|
|
style User fill:#e1f5ff
|
|||
|
|
style Role fill:#fff4e1
|
|||
|
|
style Perm fill:#ffe1f5
|
|||
|
|
style Menu fill:#e1ffe1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 资源课程学习体系
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
Resource[资源 tb_resource]
|
|||
|
|
Course[课程 tb_course]
|
|||
|
|
Chapter[章节 tb_course_chapter]
|
|||
|
|
Category[分类 tb_resource_category]
|
|||
|
|
Tag[标签 tb_tag]
|
|||
|
|
Task[学习任务 tb_learning_task]
|
|||
|
|
TaskUser[任务用户 tb_task_user]
|
|||
|
|
User[用户 tb_sys_user]
|
|||
|
|
Record[学习记录 tb_learning_record]
|
|||
|
|
|
|||
|
|
Category -->|1:N| Resource
|
|||
|
|
Resource -->|M:N| Tag
|
|||
|
|
Course -->|M:N| Tag
|
|||
|
|
Course -->|1:N| Chapter
|
|||
|
|
|
|||
|
|
Task -->|M:N| Resource
|
|||
|
|
Task -->|M:N| Course
|
|||
|
|
Task -->|M:N| User
|
|||
|
|
Task --> TaskUser
|
|||
|
|
|
|||
|
|
User -->|1:N| Record
|
|||
|
|
Resource -.->|记录| Record
|
|||
|
|
Course -.->|记录| Record
|
|||
|
|
|
|||
|
|
style Resource fill:#e1f5ff
|
|||
|
|
style Course fill:#ffe1f5
|
|||
|
|
style Task fill:#fff4e1
|
|||
|
|
style User fill:#e1ffe1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 智能体对话体系
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
User[用户 tb_sys_user]
|
|||
|
|
Config[AI配置 tb_ai_agent_config]
|
|||
|
|
Knowledge[知识库 tb_ai_knowledge]
|
|||
|
|
Conversation[对话会话 tb_ai_conversation]
|
|||
|
|
Message[对话消息 tb_ai_message]
|
|||
|
|
File[上传文件 tb_ai_upload_file]
|
|||
|
|
Stats[使用统计 tb_ai_usage_statistics]
|
|||
|
|
|
|||
|
|
User -->|1:N| Conversation
|
|||
|
|
User -->|1:N| File
|
|||
|
|
User -->|1:N| Stats
|
|||
|
|
Conversation -->|1:N| Message
|
|||
|
|
File -.->|关联| Message
|
|||
|
|
Knowledge -.->|引用| Message
|
|||
|
|
Config -.->|配置| Message
|
|||
|
|
|
|||
|
|
style User fill:#e1f5ff
|
|||
|
|
style Conversation fill:#ffe1f5
|
|||
|
|
style Knowledge fill:#fff4e1
|
|||
|
|
style Config fill:#e1ffe1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 个人中心体系
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TB
|
|||
|
|
User[用户 tb_sys_user]
|
|||
|
|
Collection[收藏 tb_user_collection]
|
|||
|
|
Points[积分 tb_user_points]
|
|||
|
|
PointsRecord[积分记录 tb_points_record]
|
|||
|
|
Achievement[成就 tb_achievement]
|
|||
|
|
UserAchievement[用户成就 tb_user_achievement]
|
|||
|
|
Browse[浏览记录 tb_user_browse_record]
|
|||
|
|
|
|||
|
|
Resource[资源]
|
|||
|
|
Course[课程]
|
|||
|
|
|
|||
|
|
User -->|1:N| Collection
|
|||
|
|
User -->|1:1| Points
|
|||
|
|
User -->|1:N| PointsRecord
|
|||
|
|
User -->|1:N| UserAchievement
|
|||
|
|
User -->|1:N| Browse
|
|||
|
|
|
|||
|
|
Achievement -->|1:N| UserAchievement
|
|||
|
|
|
|||
|
|
Resource -.->|收藏| Collection
|
|||
|
|
Course -.->|收藏| Collection
|
|||
|
|
Resource -.->|浏览| Browse
|
|||
|
|
Course -.->|浏览| Browse
|
|||
|
|
|
|||
|
|
style User fill:#e1f5ff
|
|||
|
|
style Points fill:#ffe1f5
|
|||
|
|
style Achievement fill:#fff4e1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 表关系类型说明
|
|||
|
|
|
|||
|
|
### 1对1关系 (1:1)
|
|||
|
|
- `tb_sys_user` ↔ `tb_sys_user_info`: 用户与用户信息
|
|||
|
|
- `tb_sys_user` ↔ `tb_user_points`: 用户与积分
|
|||
|
|
- `tb_resource` ↔ `tb_resource_recommend`: 资源与推荐(可选)
|
|||
|
|
- `tb_resource` ↔ `tb_banner`: 资源与Banner(可选)
|
|||
|
|
|
|||
|
|
### 1对多关系 (1:N)
|
|||
|
|
- `tb_sys_user` → `tb_sys_login_log`: 用户的登录记录
|
|||
|
|
- `tb_sys_dept` → `tb_sys_dept`: 部门的子部门
|
|||
|
|
- `tb_resource_category` → `tb_resource`: 分类下的资源
|
|||
|
|
- `tb_course` → `tb_course_chapter`: 课程的章节
|
|||
|
|
- `tb_ai_conversation` → `tb_ai_message`: 会话的消息
|
|||
|
|
|
|||
|
|
### 多对多关系 (M:N)
|
|||
|
|
- `tb_sys_user` ↔ `tb_sys_role`: 通过 `tb_sys_user_dept_role`
|
|||
|
|
- `tb_sys_role` ↔ `tb_sys_permission`: 通过 `tb_sys_role_permission`
|
|||
|
|
- `tb_resource` ↔ `tb_tag`: 通过 `tb_resource_tag`
|
|||
|
|
- `tb_course` ↔ `tb_tag`: 通过 `tb_course_tag`
|
|||
|
|
- `tb_learning_task` ↔ `tb_resource`: 通过 `tb_task_resource`
|
|||
|
|
- `tb_learning_task` ↔ `tb_course`: 通过 `tb_task_course`
|
|||
|
|
- `tb_learning_task` ↔ `tb_sys_user`: 通过 `tb_task_user`
|
|||
|
|
- `tb_sys_user` ↔ `tb_achievement`: 通过 `tb_user_achievement`
|
|||
|
|
|
|||
|
|
## 核心业务流程关系
|
|||
|
|
|
|||
|
|
### 用户学习流程
|
|||
|
|
1. 用户登录 → `tb_sys_user` + `tb_sys_login_log`
|
|||
|
|
2. 查看任务 → `tb_learning_task` + `tb_task_user`
|
|||
|
|
3. 学习资源 → `tb_resource` / `tb_course`
|
|||
|
|
4. 记录学习 → `tb_learning_record`
|
|||
|
|
5. 更新进度 → `tb_task_user` + `tb_learning_statistics`
|
|||
|
|
6. 获得积分 → `tb_user_points` + `tb_points_record`
|
|||
|
|
7. 解锁成就 → `tb_user_achievement`
|
|||
|
|
|
|||
|
|
### 资源管理流程
|
|||
|
|
1. 数据采集 → `tb_data_collection_config` + `tb_data_collection_log`
|
|||
|
|
2. 创建资源 → `tb_resource`
|
|||
|
|
3. 设置分类 → `tb_resource_category`
|
|||
|
|
4. 添加标签 → `tb_tag` + `tb_resource_tag`
|
|||
|
|
5. 推荐资源 → `tb_resource_recommend`
|
|||
|
|
6. 设置Banner → `tb_banner`
|
|||
|
|
7. 记录操作 → `tb_sys_operation_log`
|
|||
|
|
|
|||
|
|
### 智能体交互流程
|
|||
|
|
1. 创建会话 → `tb_ai_conversation`
|
|||
|
|
2. 发送消息 → `tb_ai_message`
|
|||
|
|
3. 上传文件 → `tb_ai_upload_file`
|
|||
|
|
4. 检索知识库 → `tb_ai_knowledge`
|
|||
|
|
5. 生成回复 → `tb_ai_message`
|
|||
|
|
6. 记录统计 → `tb_ai_usage_statistics`
|
|||
|
|
|
|||
|
|
## 数据流向图
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart LR
|
|||
|
|
A[用户操作] --> B{操作类型}
|
|||
|
|
|
|||
|
|
B -->|学习| C[学习记录]
|
|||
|
|
B -->|浏览| D[浏览记录]
|
|||
|
|
B -->|收藏| E[收藏记录]
|
|||
|
|
B -->|对话| F[对话记录]
|
|||
|
|
|
|||
|
|
C --> G[学习统计]
|
|||
|
|
D --> H[访问统计]
|
|||
|
|
C --> I[积分系统]
|
|||
|
|
I --> J[成就系统]
|
|||
|
|
|
|||
|
|
F --> K[AI统计]
|
|||
|
|
|
|||
|
|
G --> L[数据大屏]
|
|||
|
|
H --> L
|
|||
|
|
K --> L
|
|||
|
|
|
|||
|
|
style A fill:#e1f5ff
|
|||
|
|
style L fill:#ffe1e1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 性能优化关键点
|
|||
|
|
|
|||
|
|
1. **高频查询表**
|
|||
|
|
- `tb_sys_user`: 用户信息(添加缓存)
|
|||
|
|
- `tb_resource`: 资源列表(分页+缓存)
|
|||
|
|
- `tb_course`: 课程列表(分页+缓存)
|
|||
|
|
|
|||
|
|
2. **大数据量表**
|
|||
|
|
- `tb_learning_record`: 学习记录(分表+归档)
|
|||
|
|
- `tb_sys_operation_log`: 操作日志(分表+归档)
|
|||
|
|
- `tb_user_browse_record`: 浏览记录(分表+归档)
|
|||
|
|
- `tb_ai_message`: 对话消息(分表+归档)
|
|||
|
|
|
|||
|
|
3. **实时统计表**
|
|||
|
|
- `tb_learning_statistics`: 预聚合统计
|
|||
|
|
- `tb_sys_visit_statistics`: 预聚合统计
|
|||
|
|
- `tb_ai_usage_statistics`: 预聚合统计
|
|||
|
|
|
|||
|
|
4. **关联查询优化**
|
|||
|
|
- 用户权限查询:缓存权限信息
|
|||
|
|
- 任务详情查询:适当冗余字段
|
|||
|
|
- 资源推荐查询:使用物化视图
|
|||
|
|
|