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