【问题标题】:What would be the best way to link 3 many to many join tables in Spring JPA?在 Spring JPA 中链接 3 个多对多连接表的最佳方法是什么?
【发布时间】:2020-11-24 22:22:29
【问题描述】:

我正在开展一个需要为学校管理系统建模的项目。我面临的问题是我有 3 个中间连接表相互链接,我觉得效率低下。

  • 我有科目、教师、学生和作业。
  • Subject 和 Teacher 是多对多的。
  • SubjectTeacherJoin 和 Students 是多对多的。
  • StudentSubjectTeacherJoin 和 Assignments 是多对多的。

目前我正在使用一个带有单独键和多对一映射的连接表。 这使得查询和管理变得相当复杂。 使用复合键会是更好的选择吗?还是有其他的简化?

【问题讨论】:

    标签: database spring-boot jpa database-design many-to-many


    【解决方案1】:

    对我来说,使用具有单独键和多对一映射的连接表是可以的,因为通过这种方式,您可以将连接表作为 SQL 世界中传统的单独实体。您还可以为其提供更方便的名称以适合您的业务案例,例如 SubjectTeacherJoin 和 Students 可以是 CourseAtendee 和 StudentSubjectTeacherJoin 和 Assignments 可以是 Schedule 或类似的名称。由你来命名。作为下一阶段,我还会考虑最多运行哪些查询。由于大多数操作都是读取操作,因此对于系统中最常用的查询,您不会从非常复杂的连接中受益。这导致我提出另一个建议,即非规范化。您可以向中间表添加最多需要查询的几个字段,因此在这种情况下,您可以减轻负载并省略所有查询的复杂连接。如果您有一些重复的数据让您感到不舒服,那么认为这可能是简化查询和提高性能的一个可接受的折衷方案。

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2020-04-17
      • 2020-08-26
      • 2016-11-07
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多