# 校园思政新闻平台数据库表结构说明 ## 数据库初始化顺序 按照以下顺序执行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) - 资源 → Banner(1对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`: 主键ID(VARCHAR(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. **多租户**:添加租户相关表和字段