我有一个学生表和一个课程表,它们之间具有多对多的关系(一个学生可以选很多门课程,而一个课程可以被很多学生选修)。
如果我将上述数据模型实现为数据库,则将创建第三个表来表示多对多关系。
但是我想在Drupal 8中实现上述数据模型。我认为在Drupal 8中有两种方法可以实现上述数据模型:
我是否纠正这两种方法有效?如果我是正确的,我应该选择哪一个?
答案 0 :(得分:0)
我认为您是对的,我会建议两种方式。
只要他们的连接没有任何其他参数(例如订阅日期等),我就会在学生的内容类型中选择实体引用。
答案 1 :(得分:0)
这两个都是有效的,还有一个附加选项是在每种内容类型上都有一个对应的引用字段。
最好的选择是为了保持编辑者的能力。
根据@ c1u31355,如果还有其他“连接”元数据,那么第三个内容类型就是其中的一种选择(或者可能是一段)。
如果是直接连接A <> B,而您只希望将引用放在一个地方,那么请问问自己,添加该数据最方便的地方是?创建课程然后链接到30个学生是否更容易,还是要在创建学生时将课程添加到学生?创建起来更快,但是却难以维护。
无论哪种方式,使用我在其他问题之一中建议的IEF都会有帮助。
作为最后的想法,拥有第三种内容类型可能会导致各种问题,除非您很好地控制字段,例如将其限制为仅允许一个学生学习一堆课程,反之亦然,在这种情况下,维护只需在内容类型上放置一个引用字段(将字段限制为一个值),就会更容易。