2

我有两张桌子:

表格1:

id(int) | stuff(text)
-------------------------
1       | foobarfoobarfoo
2       | blahfooblah
3       | foo

表2:

id(int) | otherstuff(text)
--------------------------
1       | foo
2       | bar
3       | blah

table1 中的一行可以有多个 foo、bar 等。并且,table2 中的每一行可以出现在 table1 的多个行中。

这是保持这一点的更好方法。我应该像这样创建第三个表:

表3:

id_from2(int) | id_from1(int)
-----------------------------
1             | 1
1             | 2
1             | 3
2             | 1
3             | 2

或者,我是否应该在 table1 和 table2 中添加一个数组类型的列来跟踪相同的信息?

4

5 回答 5

5

是的,使用联结表是在 RDBMS 中实现多对多关系的正确方法。

table3如有必要,您可以将更多属性添加到您的联结表(即)。例如,如果关系是有序的,您可以添加第三个字段来指定(table1, table2)组合的顺序。这是Stack Overflow 上一个答案的链接,它提供了一个非常详细的多对多表示例。

于 2012-04-19T15:40:47.583 回答
2

这是一个标准的多对多设计,最灵活的解决方案是第三个表,如您所示,具有 id 关联。

于 2012-04-19T15:40:37.063 回答
1

不能再同意了。您添加第三个表的设计是正确的。

于 2012-04-19T15:44:02.210 回答
0

关系表是关联多对多关系的最佳方式。你做得很好。

于 2012-04-19T15:40:49.563 回答
0

所以你想要多对多的关系?表 1 中的一个可以与 2 中的更多对象有关,反之亦然?是的,像你说的那样使用第三张桌子,这是一种最佳做法。还附加一个主键自动增量列,只是为了安全起见

于 2012-04-19T15:40:55.600 回答