Files

243 lines
8.0 KiB
Markdown
Raw Permalink Normal View History

2025-10-15 10:39:51 +08:00
# 校园思政新闻平台数据库表结构说明
## 数据库初始化顺序
按照以下顺序执行SQL文件
1. `createDB.sql` - 创建数据库
2. `createTableUser.sql` - 创建用户相关表
3. `createTablePermission.sql` - 创建权限相关表
4. `createTablePermissionControl.sql` - **创建统一资源权限控制表**
5. `createTableResource.sql` - 创建资源管理相关表
6. `createTableCourse.sql` - 创建课程管理相关表
7. `createTableLearning.sql` - 创建学习管理相关表
8. `createTableUserCenter.sql` - 创建个人中心相关表
9. `createTableAI.sql` - 创建智能体相关表
10. `createTableSystem.sql` - 创建系统配置和日志相关表
## 表结构概览
### 1. 用户管理模块 (createTableUser.sql)
- `tb_sys_user` - 用户表
- `tb_sys_user_info` - 用户信息表
- `tb_sys_login_log` - 登录日志表
### 2. 权限管理模块 (createTablePermission.sql)
- `tb_sys_dept` - 部门表
- `tb_sys_role` - 角色表
- `tb_sys_dept_role` - 部门-角色关联表
- `tb_sys_user_dept_role` - 用户-部门-角色关联表
- `tb_sys_permission` - 权限表
- `tb_sys_role_permission` - 角色-权限关联表
- `tb_sys_menu` - 菜单表
- `tb_sys_menu_permission` - 菜单-权限关联表
### 3. 资源管理模块 (createTableResource.sql)
- `tb_resource` - 资源/新闻表
- `tb_resource_category` - 资源分类表
- 默认分类:党史学习、领导讲话、政策解读、红色经典、专题报告、思政案例
- `tb_banner` - Banner轮播图表
- `tb_resource_recommend` - 资源推荐表TOP资源
- `tb_tag` - 标签表
- `tb_resource_tag` - 资源-标签关联表
- `tb_data_collection_config` - 数据采集配置表
- `tb_data_collection_log` - 数据采集记录表
### 4. 课程管理模块 (createTableCourse.sql)
- `tb_course` - 课程表
- `tb_course_chapter` - 课程章节表
- `tb_course_tag` - 课程-标签关联表
- `tb_course_dept` - 课程-部门权限表
### 5. 学习管理模块 (createTableLearning.sql)
- `tb_learning_task` - 学习计划/任务表
- `tb_task_resource` - 任务-资源关联表
- `tb_task_course` - 任务-课程关联表
- `tb_task_user` - 任务-用户关联表(任务接收人员)
- `tb_learning_record` - 学习记录表
- `tb_learning_statistics` - 学习统计表(按天统计)
### 6. 个人中心模块 (createTableUserCenter.sql)
- `tb_user_collection` - 用户收藏表
- `tb_achievement` - 成就表
- `tb_user_achievement` - 用户-成就关联表
- `tb_user_points` - 用户积分表
- `tb_points_record` - 积分记录表
- `tb_user_browse_record` - 用户浏览记录表
### 7. 智能体模块 (createTableAI.sql)
- `tb_ai_agent_config` - 智能体配置表
- `tb_ai_knowledge` - 知识库表
- `tb_ai_conversation` - 对话会话表
- `tb_ai_message` - 对话消息表
- `tb_ai_upload_file` - 上传文件表
- `tb_ai_usage_statistics` - AI使用统计表
### 8. 系统配置和日志模块 (createTableSystem.sql)
- `tb_sys_operation_log` - 操作日志表
- `tb_sys_config` - 系统配置表
- `tb_sys_visit_statistics` - 系统访问统计表
- `tb_sys_notification` - 系统通知表
- `tb_sys_file` - 文件上传记录表
- `tb_sys_dict_type` - 数据字典类型表
- `tb_sys_dict_data` - 数据字典详情表
## 表关系说明
### 核心关系
1. **用户体系**
- 用户 → 用户信息1对1
- 用户 → 部门-角色(多对多)
- 角色 → 权限(多对多)
- 菜单 → 权限(多对多)
2. **资源体系**
- 资源 → 分类多对1
- 资源 → 标签(多对多)
- 资源 → 推荐1对1
- 资源 → Banner1对1
3. **课程体系**
- 课程 → 章节1对多
- 课程 → 标签(多对多)
- 课程 → 部门权限(多对多)
4. **学习体系**
- 任务 → 资源/课程(多对多)
- 任务 → 用户(多对多)
- 用户 → 学习记录1对多
- 用户 → 学习统计1对多
5. **个人中心**
- 用户 → 收藏1对多
- 用户 → 成就(多对多)
- 用户 → 积分1对1
- 用户 → 浏览记录1对多
6. **智能体**
- 用户 → 对话会话1对多
- 会话 → 消息1对多
- 用户 → 上传文件1对多
- 知识库(独立)
## 数据字典
### 通用状态码
- **deleted**: 0-未删除, 1-已删除
- **status**: 根据业务模块有不同含义,具体见各表注释
### 资源相关
- **resource.status**: 0-草稿, 1-已发布, 2-下架
- **link_type**: 1-资源, 2-课程, 3-外部链接
### 课程相关
- **course.status**: 0-未上线, 1-已上线, 2-已下架
- **permission_type**: 0-公开, 1-指定部门
### 学习相关
- **task.status**: 0-草稿, 1-进行中, 2-已结束
- **task_user.status**: 0-未完成, 1-已完成
- **resource_type**: 1-资源, 2-课程, 3-章节
### 个人中心相关
- **collection_type**: 1-资源, 2-课程
- **achievement.type**: 1-勋章, 2-等级
- **condition_type**: 1-学习时长, 2-资源数量, 3-课程数量, 4-连续学习天数
- **points_record.type**: 1-获得, 2-消费
- **points_record.source_type**: 1-学习资源, 2-学习课程, 3-完成任务, 4-获得成就
### 智能体相关
- **ai_knowledge.source_type**: 1-手动添加, 2-文件导入, 3-资源同步
- **ai_message.role**: user-用户, assistant-助手, system-系统
- **ai_upload_file.status**: 0-处理中, 1-已完成, 2-失败
### 系统相关
- **menu.type**: 0-目录, 1-菜单, 2-按钮
- **notification.type**: 1-系统通知, 2-任务通知, 3-成就通知
- **config_type**: string-字符串, number-数字, boolean-布尔, json-JSON对象
## 索引说明
所有表都包含以下基本索引:
- 主键索引id
- 唯一键索引如user_id、role_id等业务唯一标识
- 外键关联索引
- 时间字段索引create_time、update_time等
- 状态字段索引status、deleted等
- 常用查询字段索引
## 字段说明
### 通用字段
所有表都包含以下通用字段:
- `id`: 主键IDVARCHAR(50)
- `creator`: 创建者ID
- `updater`: 更新者ID
- `create_time`: 创建时间
- `update_time`: 更新时间
- `delete_time`: 删除时间(软删除)
- `deleted`: 是否删除0-否, 1-是)
### 特殊字段
- 所有表的字符编码为 `utf8mb4`,支持存储表情符号
- LONGTEXT 用于存储富文本内容
- TEXT 用于存储较长的文本描述
- VARCHAR 用于存储固定长度的字符串
- DECIMAL 用于存储精确的数值(如百分比、金额等)
- TIMESTAMP 用于存储时间(支持时区)
- INT/BIGINT 用于存储整数
## 注意事项
1. **软删除**所有业务表都使用软删除机制deleted字段删除操作不会真正删除数据
2. **时间戳**:所有时间字段使用 TIMESTAMP 类型,自动记录创建和更新时间
3. **字符集**:数据库和所有表都使用 utf8mb4 字符集支持存储所有Unicode字符
4. **外键**:建议在应用层维护外键关系,不使用数据库外键约束,以提高性能
5. **索引优化**:根据实际查询情况可以添加组合索引
6. **数据量**:对于大数据量表(如日志表、记录表),建议定期归档历史数据
7. **ID生成**建议使用雪花算法或UUID生成ID确保分布式环境下的唯一性
## 默认数据
系统初始化后会包含以下默认数据:
1. **用户**admin密码已加密
2. **部门**:超级部门、默认部门
3. **角色**:管理员、自由角色
4. **权限**:系统管理相关权限
5. **菜单**:系统管理菜单
6. **资源分类**6个默认分类
7. **系统配置**13项默认配置
8. **智能体配置**:思政小帮手
## 扩展建议
根据实际业务需求,可以扩展以下功能:
1. **评论系统**:添加资源/课程评论表
2. **问答系统**:添加问答相关表
3. **考试系统**:添加试题库、试卷、考试记录等表
4. **消息系统**:扩展站内信功能
5. **工作流**:添加审批流程相关表
6. **数据分析**:添加更详细的统计分析表
7. **多租户**:添加租户相关表和字段