首页 > 解决方案 > 我应该如何在相同的两个模型之间建立多个多对多关系?

问题描述

如果我有BookandAuthor和 之间的关系可以作为MainAuthorand存在AssistantAuthorMainAuthor和可能有多个实例AssistantAuthor。在制作两个单独的连接表或在连接表中添加一个表示它是MainAuthor或的关系的字段之间有什么权衡AssistantAuthor

标签: mysqlruby-on-railsdatabase

解决方案


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

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

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

底线:如果您认为关系稳定且不会改变,请选择第一个;如果你更喜欢增加灵活性,你可以采用第二个稍微贵一点的。


推荐阅读