ソースを参照

📝 docs(entity): add entity relationship documentation

- create entity-relationships.md document
- add overview of 23 entities across 4 business modules
- include detailed ER diagram using mermaid
- document 4 major relationship categories with usage scenarios
- list entity details with descriptions and associations
- explain architecture design principles and usage examples
- provide performance optimization suggestions
yourname 8 ヶ月 前
コミット
adeabcfc72
1 ファイル変更249 行追加0 行削除
  1. 249 0
      docs/entity-relationships.md

+ 249 - 0
docs/entity-relationships.md

@@ -0,0 +1,249 @@
+# 银龄平台实体关联关系文档
+
+## 概述
+
+本文档详细描述了银龄平台项目中所有实体之间的关联关系,包括实体间的依赖关系、使用场景和架构设计原则。
+
+## 实体总览
+
+项目共包含 **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. **查询优化**
+   - 避免深层次的关联查询
+   - 使用延迟加载减少数据传输
+
+## 总结
+
+本项目采用了清晰的分层架构设计,各业务模块相对独立,通过标准化的关联关系实现了完整的银龄服务平台。实体设计遵循了用户中心、业务聚合、统计分离等现代架构原则,为后续的功能扩展和性能优化奠定了良好基础。