【问题标题】: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 或类似的名称。由你来命名。作为下一阶段,我还会考虑最多运行哪些查询。由于大多数操作都是读取操作,因此对于系统中最常用的查询,您不会从非常复杂的连接中受益。这导致我提出另一个建议,即非规范化。您可以向中间表添加最多需要查询的几个字段,因此在这种情况下,您可以减轻负载并省略所有查询的复杂连接。如果您有一些重复的数据让您感到不舒服,那么认为这可能是简化查询和提高性能的一个可接受的折衷方案。