如何处理微服务数据库关系?

时间:2019-07-25 05:54:30

标签: database rest spring-boot microservices spring-cloud

我正在研究一个示例微服务项目。 我有教师服务,学生服务,学习服务和体育服务。 我按服务模式使用了数据库

老师有很多学生 一个学生有很多学习数据和体育数据 老师可能会换学生

  • 如何处理这种关系?

老师想看他的学生学习和运动数据

  • 在微服务中处理这种情况的最佳方法是什么

我试图通过将学生证存储在教师服务中

|---------------------|------------------|
|      teacher_id     |     student_id   |
|---------------------|------------------|
|          12         |         34       |
|---------------------|------------------|

但是在学习服务和体育服务中,我只存储student_id。

获得老师的学生的学习和体育数据。我从教师服务中获取老师的所有学生证,并将其传递给学习服务和体育服务。

我通过Rest GET方法传递了学生证,而且它越来越长

=====>更新。

如何在所有数据库中存储Teacher_id和Student_id(具有一致性的重复数据)或在第3个数据库(分片数据库)中存储

1 个答案:

答案 0 :(得分:1)

我认为问题在于您尚未完全探索该域,因此急于想出如何创建数据库关系。目前,不要专注于数据库密钥的存储位置,因为这不再是第三范式数据库设计。

考虑bounded contexts。老师的背景可能很小-老师除了拥有技能外没有“拥有”任何东西。一个主题有许多班级/科,每个班级/科都有一个老师和学生。一项运动将有教练和学生。

这样思考可以帮助您弄清楚哪些服务需要包含对它们自身上下文之外资源的引用。