Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我应该如何在相同的两个模型之间建立多对多关系?_Mysql_Ruby On Rails_Database - Fatal编程技术网

Mysql 我应该如何在相同的两个模型之间建立多对多关系?

Mysql 我应该如何在相同的两个模型之间建立多对多关系?,mysql,ruby-on-rails,database,Mysql,Ruby On Rails,Database,如果我有Book和Author,那么两者之间的关系可以存在为main Author和AssistantAuthor。可能有多个main作者和AssistantAuthor的实例。制作两个单独的联接表,或者在联接表中添加一个表示关系的字段(取决于它是main author还是AssistantAuthor)之间的权衡是什么?这取决于您认为业务模式在未来会发生多大的变化 两种独立关系的好处是看起来更干净、更简单。如果您想要主要作者,请使用一种关系;如果你想要这些助手,你可以用另一个。另一个好处是采用

如果我有
Book
Author
,那么两者之间的关系可以存在为
main Author
AssistantAuthor
。可能有多个
main作者
AssistantAuthor
的实例。制作两个单独的联接表,或者在联接表中添加一个表示关系的字段(取决于它是
main author
还是
AssistantAuthor
)之间的权衡是什么?

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

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

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

一句话:如果你认为这段关系是稳定的,不会改变,那就选择第一段;如果你更喜欢增加灵活性,你可以采用第二个稍微贵一点的