# school_student_favorites 表文档 ## 表概述 **表名**: school_student_favorites **功能**: 学员收藏表,用于管理学员对各类内容的收藏功能 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int NULL NO PRI NULL auto_increment select,insert,update,references student_id int NULL NO MUL NULL select,insert,update,references 学员ID target_type varchar(50) utf8mb4_0900_ai_ci NO MUL NULL select,insert,update,references 收藏类型:article-文章 target_id int NULL NO NULL select,insert,update,references 目标ID created_at timestamp NULL NO CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 收藏时间 ``` ## 功能用途 ### 主要功能 - **收藏管理**: 管理学员对各类内容的收藏和取消收藏操作 - **多类型支持**: 支持文章(article)等多种类型内容的收藏 - **学员关联**: 通过student_id关联具体的学员用户 - **目标定位**: 通过target_type和target_id精确定位收藏的具体内容 - **时间记录**: 记录收藏的具体时间,便于排序和统计 - **收藏列表**: 为学员提供个人收藏内容的列表展示 - **快速访问**: 为学员提供快速访问收藏内容的入口 - **收藏统计**: 统计学员的收藏行为和偏好分析 - **内容推荐**: 基于收藏数据为学员推荐相关内容 ### 业务场景 - **文章收藏**: 学员收藏感兴趣的教学文章、学习资料等 - **课程收藏**: 学员收藏心仪的课程,便于后续报名学习 - **视频收藏**: 学员收藏教学视频、录播课程等多媒体内容 - **资料收藏**: 学员收藏学习资料、课件、习题等教学资源 - **活动收藏**: 学员收藏感兴趣的校园活动、讲座等 - **教师收藏**: 学员收藏喜欢的任课教师,关注其课程动态 - **个人中心**: 在个人中心展示学员的收藏内容列表 - **学习计划**: 基于收藏内容制定个性化学习计划 - **内容推荐**: 根据收藏偏好推荐相似的学习内容 - **社交分享**: 学员可以分享自己的收藏内容给其他同学 ## 关联关系 ### 主要关联表 - **school_student**: 学员表,通过student_id关联学员信息 - **school_article**: 文章表,当target_type为article时关联 - **school_course**: 课程表,当target_type为course时关联 - **school_video**: 视频表,当target_type为video时关联 - **school_personnel**: 教师表,当target_type为teacher时关联 - **school_activity**: 活动表,当target_type为activity时关联 - **school_resource**: 资源表,当target_type为resource时关联 - **school_member**: 会员表,通过学员关联到会员信息 ### 关联说明 - `student_id` 关联 `school_student.id`,标识收藏的学员 - `target_type` 和 `target_id` 组合标识收藏的具体内容 - **文章收藏**: target_type='article', target_id关联school_article.id - **课程收藏**: target_type='course', target_id关联school_course.id - **视频收藏**: target_type='video', target_id关联school_video.id - **教师收藏**: target_type='teacher', target_id关联school_personnel.id - **多态关联**: 通过target_type实现对不同类型内容的统一收藏管理 - **学员关联**: 与学员表关联,获取收藏者的详细信息 - **内容关联**: 根据类型动态关联到具体的内容表 ## 索引建议 ```sql -- 主键索引(自动创建) PRIMARY KEY (id) -- 学员ID索引(用于查询学员的收藏列表) INDEX idx_student_id (student_id) -- 目标类型索引(用于按类型查询收藏) INDEX idx_target_type (target_type) -- 创建时间索引(用于按时间排序) INDEX idx_created_at (created_at) -- 复合索引(用于查询学员的特定类型收藏) INDEX idx_student_target_type (student_id, target_type) -- 复合索引(用于查询特定内容的收藏情况) INDEX idx_target_type_id (target_type, target_id) -- 复合索引(用于防重复收藏) UNIQUE INDEX idx_student_target_unique (student_id, target_type, target_id) -- 复合索引(用于收藏时间排序) INDEX idx_student_created (student_id, created_at DESC) ``` ## 注意事项 - **重复收藏**: 需要防止学员重复收藏同一内容,建议添加唯一索引 - **数据一致性**: 删除目标内容时需要同步删除相关收藏记录 - **类型扩展**: target_type字段需要支持新的内容类型扩展 - **权限控制**: 学员只能管理自己的收藏,不能查看他人收藏 - **性能优化**: 收藏列表查询需要考虑分页和缓存机制 - **数据清理**: 定期清理无效的收藏记录(目标内容已删除) - **统计分析**: 可以基于收藏数据进行用户行为分析 - **存储限制**: 考虑对单个学员的收藏数量进行合理限制 - **时间精度**: created_at字段保证时间记录的准确性 - **业务逻辑**: 收藏和取消收藏的业务逻辑需要保证原子性 - **内容关联**: 确保target_id对应的内容确实存在 - **索引维护**: 定期维护和优化查询索引 - **备份策略**: 重要的收藏数据需要定期备份 - **监控告警**: 监控收藏功能的使用情况和异常 - **用户体验**: 收藏操作需要提供良好的用户反馈