entity-relationships.md 8.3 KB

银龄平台实体关联关系文档

概述

本文档详细描述了银龄平台项目中所有实体之间的关联关系,包括实体间的依赖关系、使用场景和架构设计原则。

实体总览

项目共包含 23个实体类,分布在以下业务模块:

  • 用户系统 (3个实体)
  • 银龄用户系统 (15个实体)
  • 招聘系统 (7个实体)
  • 文件系统 (1个实体)

实体关系图

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.userIdUserEntity.id
  • 使用场景: 用户注册后完善银龄档案信息

1.2 UserEntity ↔ UserPreference(一对一)

  • 描述: 用户个性化设置
  • 关联字段: UserPreference.userIdUserEntity.id
  • 使用场景: 移动端字体大小、深色模式等偏好设置

2. 银龄业务系统

2.1 UserEntity ↔ SilverTimeBank(一对多)

  • 描述: 用户的时间银行服务记录
  • 关联字段: SilverTimeBank.userIdUserEntity.id
  • 使用场景: 志愿服务、兼职工作、咨询培训记录

2.2 UserEntity ↔ SilverKnowledge(一对多)

  • 描述: 用户发布的知识分享内容
  • 关联字段: SilverKnowledge.userIdUserEntity.id
  • 使用场景: 用户发布文章、视频、经验分享等

2.3 SilverKnowledge ↔ SilverKnowledgeCategory(多对一)

  • 描述: 知识内容所属分类
  • 关联字段: SilverKnowledge.categoryIdSilverKnowledgeCategory.id
  • 使用场景: 知识库内容分类管理

2.4 知识标签关联(多对多)

  • 实体: SilverKnowledge ↔ SilverKnowledgeTagRelation ↔ SilverKnowledgeTag
  • 描述: 知识内容与标签的多对多关系
  • 使用场景: 知识内容的标签化管理

2.5 知识交互记录

  • 实体: UserEntity ↔ SilverKnowledgeInteraction ↔ SilverKnowledge
  • 描述: 用户对知识内容的交互行为
  • 交互类型: 阅读、下载、点赞、评论、收藏、分享

3. 招聘系统关联

3.1 Company ↔ Job(一对多)

  • 描述: 企业发布的招聘岗位
  • 关联字段: Job.companyIdCompany.id
  • 使用场景: 企业招聘管理

3.2 Company ↔ CompanyImage(一对多)

  • 描述: 企业相关图片资料
  • 关联字段: CompanyImage.companyIdCompany.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:用户发布知识

-- 用户发布一篇健康知识
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:求职申请流程

-- 用户申请岗位
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:时间银行记录

-- 记录志愿服务
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. 查询优化

    • 避免深层次的关联查询
    • 使用延迟加载减少数据传输

总结

本项目采用了清晰的分层架构设计,各业务模块相对独立,通过标准化的关联关系实现了完整的银龄服务平台。实体设计遵循了用户中心、业务聚合、统计分离等现代架构原则,为后续的功能扩展和性能优化奠定了良好基础。