# 银龄平台实体关联关系文档 ## 概述 本文档详细描述了银龄平台项目中所有实体之间的关联关系,包括实体间的依赖关系、使用场景和架构设计原则。 ## 实体总览 项目共包含 **23个实体类**,分布在以下业务模块: - **用户系统** (3个实体) - **银龄用户系统** (15个实体) - **招聘系统** (7个实体) - **文件系统** (1个实体) ## 实体关系图 ```mermaid erDiagram UserEntity ||--o{ SilverUserProfile : "1对1" UserEntity ||--o{ UserPreference : "1对1" UserEntity ||--o{ SilverTimeBank : "1对多" UserEntity ||--o{ SilverKnowledge : "1对多" UserEntity ||--o{ SilverKnowledgeInteraction : "1对多" UserEntity ||--o{ Application : "1对多" UserEntity ||--o{ Favorite : "1对多" UserEntity ||--o{ ViewRecord : "1对多" Company ||--o{ Job : "1对多" Company ||--o{ CompanyImage : "1对多" Job ||--o{ Application : "1对多" Job ||--o{ Favorite : "1对多" Job ||--o{ ViewRecord : "1对多" SilverKnowledge ||--o{ SilverKnowledgeTagRelation : "1对多" SilverKnowledge ||--o{ SilverKnowledgeInteraction : "1对多" SilverKnowledge ||--o{ SilverKnowledgeStats : "1对1" SilverKnowledge }o--|| SilverKnowledgeCategory : "多对1" SilverKnowledgeTag ||--o{ SilverKnowledgeTagRelation : "1对多" ``` ## 详细关联关系 ### 1. 用户系统关联 #### 1.1 UserEntity ↔ SilverUserProfile(一对一) - **描述**: 基础用户账号对应银龄用户档案 - **关联字段**: `SilverUserProfile.userId` → `UserEntity.id` - **使用场景**: 用户注册后完善银龄档案信息 #### 1.2 UserEntity ↔ UserPreference(一对一) - **描述**: 用户个性化设置 - **关联字段**: `UserPreference.userId` → `UserEntity.id` - **使用场景**: 移动端字体大小、深色模式等偏好设置 ### 2. 银龄业务系统 #### 2.1 UserEntity ↔ SilverTimeBank(一对多) - **描述**: 用户的时间银行服务记录 - **关联字段**: `SilverTimeBank.userId` → `UserEntity.id` - **使用场景**: 志愿服务、兼职工作、咨询培训记录 #### 2.2 UserEntity ↔ SilverKnowledge(一对多) - **描述**: 用户发布的知识分享内容 - **关联字段**: `SilverKnowledge.userId` → `UserEntity.id` - **使用场景**: 用户发布文章、视频、经验分享等 #### 2.3 SilverKnowledge ↔ SilverKnowledgeCategory(多对一) - **描述**: 知识内容所属分类 - **关联字段**: `SilverKnowledge.categoryId` → `SilverKnowledgeCategory.id` - **使用场景**: 知识库内容分类管理 #### 2.4 知识标签关联(多对多) - **实体**: SilverKnowledge ↔ SilverKnowledgeTagRelation ↔ SilverKnowledgeTag - **描述**: 知识内容与标签的多对多关系 - **使用场景**: 知识内容的标签化管理 #### 2.5 知识交互记录 - **实体**: UserEntity ↔ SilverKnowledgeInteraction ↔ SilverKnowledge - **描述**: 用户对知识内容的交互行为 - **交互类型**: 阅读、下载、点赞、评论、收藏、分享 ### 3. 招聘系统关联 #### 3.1 Company ↔ Job(一对多) - **描述**: 企业发布的招聘岗位 - **关联字段**: `Job.companyId` → `Company.id` - **使用场景**: 企业招聘管理 #### 3.2 Company ↔ CompanyImage(一对多) - **描述**: 企业相关图片资料 - **关联字段**: `CompanyImage.companyId` → `Company.id` - **使用场景**: 企业相册、环境展示等 #### 3.3 求职申请流程 - **实体**: UserEntity ↔ Application ↔ Job ↔ Company - **描述**: 完整的求职申请链路 - **流程**: 用户 → 申请 → 岗位 → 企业 #### 3.4 用户行为记录 - **实体**: UserEntity ↔ (Favorite + ViewRecord) ↔ Job - **描述**: 用户对岗位的收藏和浏览行为 - **使用场景**: 个性化推荐、用户行为分析 ### 4. 通用关联模式 #### 4.1 操作人追踪 所有实体包含以下追踪字段: - `created_by`: 创建人ID → UserEntity.id - `updated_by`: 更新人ID → UserEntity.id - `user_id`: 所属用户ID → UserEntity.id #### 4.2 时间戳管理 所有实体包含: - `created_at`: 创建时间 - `updated_at`: 更新时间 ## 实体详细列表 ### 用户系统实体 | 实体 | 描述 | 关联实体 | |------|------|----------| | UserEntity | 基础用户账号 | SilverUserProfile, UserPreference, 所有业务实体 | | Role | 用户角色 | UserEntity (多对多) | ### 银龄用户系统实体 | 实体 | 描述 | 主要关联 | |------|------|----------| | SilverUserProfile | 银龄用户档案 | UserEntity | | SilverPoint | 用户积分账户 | UserEntity | | SilverPointTransaction | 积分交易记录 | UserEntity | | SilverTimeBank | 时间银行记录 | UserEntity | | TimeBankIntro | 时间银行介绍 | - | | TimeBankCase | 时间银行案例 | - | | TimeBankStats | 时间银行统计 | - | | SilverKnowledge | 知识分享内容 | UserEntity, SilverKnowledgeCategory | | SilverKnowledgeCategory | 知识分类 | SilverKnowledge | | SilverKnowledgeTag | 知识标签 | SilverKnowledgeTagRelation | | SilverKnowledgeTagRelation | 知识-标签关联 | SilverKnowledge, SilverKnowledgeTag | | SilverKnowledgeStats | 知识统计 | SilverKnowledge | | SilverKnowledgeInteraction | 知识交互记录 | UserEntity, SilverKnowledge | | ElderlyUniversity | 老年大学信息 | - | | PolicyNews | 政策新闻 | - | | UserPreference | 用户偏好设置 | UserEntity | ### 招聘系统实体 | 实体 | 描述 | 主要关联 | |------|------|----------| | Company | 招聘企业 | Job, CompanyImage | | Job | 招聘岗位 | Company, Application, Favorite, ViewRecord | | Application | 求职申请 | UserEntity, Job | | Favorite | 收藏记录 | UserEntity, Job | | ViewRecord | 浏览记录 | UserEntity, Job | | CompanyImage | 企业图片 | Company | ### 文件系统实体 | 实体 | 描述 | 主要关联 | |------|------|----------| | File | 文件管理 | - | ## 架构设计原则 ### 1. 用户中心设计 - 所有业务实体通过`user_id`关联到基础UserEntity - 保证用户数据的完整性和一致性 ### 2. 业务聚合清晰 - 按功能模块分组,避免跨模块强耦合 - 每个业务域内部关联紧密,对外依赖最小化 ### 3. 统计信息分离 - 高频更新的统计信息独立存储 - 避免影响核心业务表的性能 ### 4. 多对多关系处理 - 使用中间表处理复杂的多对多关系 - 保持关系的灵活性和扩展性 ### 5. 数据追踪完善 - 完整的创建人、更新人追踪 - 时间戳记录所有操作 ## 使用场景示例 ### 场景1:用户发布知识 ```sql -- 用户发布一篇健康知识 INSERT INTO silver_knowledges (user_id, title, content, category_id, created_by) VALUES (123, '老年人健康饮食指南', '详细内容...', 5, 123); -- 添加标签关联 INSERT INTO silver_knowledge_tag_relations (knowledge_id, tag_id) VALUES (新知识的ID, 1), (新知识的ID, 3); -- 更新用户档案统计 UPDATE silver_user_profiles SET knowledge_share_count = knowledge_share_count + 1 WHERE user_id = 123; ``` ### 场景2:求职申请流程 ```sql -- 用户申请岗位 INSERT INTO job_applications (job_id, user_id, status, created_by) VALUES (456, 123, 0, 123); -- 更新岗位申请数 UPDATE silver_jobs SET application_count = application_count + 1 WHERE id = 456; ``` ### 场景3:时间银行记录 ```sql -- 记录志愿服务 INSERT INTO silver_time_banks ( user_id, work_type, organization, work_hours, earned_points, created_by ) VALUES (123, 1, '幸福社区', 3.5, 35, 123); -- 更新用户积分 UPDATE silver_user_profiles SET time_bank_hours = time_bank_hours + 3.5 WHERE user_id = 123; ``` ## 性能优化建议 1. **索引优化** - 为所有外键字段创建索引 - 高频查询字段建立复合索引 2. **分表策略** - 大表按时间分片(如日志、交互记录) - 冷热数据分离存储 3. **缓存策略** - 统计数据实时计算+缓存 - 热点数据Redis缓存 4. **查询优化** - 避免深层次的关联查询 - 使用延迟加载减少数据传输 ## 总结 本项目采用了清晰的分层架构设计,各业务模块相对独立,通过标准化的关联关系实现了完整的银龄服务平台。实体设计遵循了用户中心、业务聚合、统计分离等现代架构原则,为后续的功能扩展和性能优化奠定了良好基础。