如何在同一两个模型之间建立多对多关系?

时间:2020-06-11 16:40:16

标签: mysql ruby-on-rails database

如果我有BookAuthor,并且它们之间的关系可以分别为MainAuthorAssistantAuthorMainAuthorAssistantAuthor可能有多个实例。制作两个单独的联接表,或在联接表中添加一个字段表示与MainAuthorAssistantAuthor之间的关系之间的权衡是什么?

1 个答案:

答案 0 :(得分:1)

这取决于您认为业务模式将来会发生多大的变化。

两个独立关系的好处是它看起来更干净,更简单。如果您想要主要作者,则使用一种关系;如果需要助手,则使用另一个。另一个好处是采用此解决方案更便宜。

与“类型”字段建立单一关系的好处是随时间变化的灵活性。如果下个月您想添加第三或第四种作者,该怎么办?例如:法律顾问还是合作者?相同的单一关系应该能够轻松容纳更多类型。

底线:如果您认为这种关系稳定并且不会改变,请选择第一个;如果您想增加灵活性,则可以采用价格稍高的第二个。