【问题标题】:join table code for three tables三个表的连接表代码
【发布时间】:2018-05-13 13:07:18
【问题描述】:

为其他 3 个表编写连接表的最优雅和可维护的方法是什么?

假设我有三个表:School、Student、Teacher,它们都带有主键 (ID)。

学生可以上很多学校,有很多老师。 教师可以在许多学校任教。老师可以教不同学校的同一个学生(或不教)。

看了很多两表多对多关系的文章,却找不到正确的处理三表的方法,

欢迎提出任何建议。

【问题讨论】:

    标签: java jpa entity persistence


    【解决方案1】:

    首先 - 在我看来 - 你需要添加类似 Course 的概念。正是这种关系告诉你Students 一些Teacher 在一些特定的School 中教导。

    我之所以介绍它是因为我猜不是所有Teachers 的教学都在一些School 教所有Students 关注School

    • Course 保留在一个 School 上。 School 可以有多个 Courses。 (关系)

    • Course 有很多 Students。 Studend 参加了许多 Courses。 (关系)

    • Teacher 教很多Courses。 Course 有一位老师。 (关系)

    在这个集合中有一个ManyToMany 关系,即Student-CourseCourseTeacherSchoolManyToOne 关系。

    【讨论】:

    • 引入新表是个好主意。我会按照你的建议尝试添加中间表。
    • 是的,实际上是连接三个表的连接表。只是我回答的重点不是引入一个新表(它已经在你的问题中了),而是需要考虑连接背后的概念是什么。连接表描述了哪些关系?很可能它类似于Course,它也是一个Entity
    【解决方案2】:

    我会使用 ORM 来帮助您处理这些类型的关系。我认为你们的关系是多对多的关系。

    这是一篇文章,显示了可能与您想要的匹配。

    Describing Relationships: Django's ManyToMany Through

    【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 2018-11-06
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多