如何关联两个表中的多行?

时间:2012-04-19 15:38:36

标签: sql

我有两张桌子:

表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中添加一个类型数组列来跟踪相同的信息?

5 个答案:

答案 0 :(得分:5)

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

如有必要,您可以向联结表添加更多属性(即table3)。例如,如果关系是 ordered ,则可以添加第三个字段,指定(table1, table2)组合的排序。这是关于Stack Overflow的答案的link,它给出了一个多对多表的详细示例。

答案 1 :(得分:2)

这是一个标准的Many-To-Many设计,最灵活的解决方案是第三个具有id关联的表格。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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