# 校园思政新闻平台 - 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. **关联查询优化**
   - 用户权限查询：缓存权限信息
   - 任务详情查询：适当冗余字段
   - 资源推荐查询：使用物化视图

