下午好(至少在这里),
我有一个多对多的关系架构,我在构建时遇到了问题。主要的问题是我只使用主键和外键(没有varchars或枚举来简化事情),并且多对多关系的数量是不可预测的,并且可以随时增加。
我环顾四周各种问题,找不到直接解决这个问题的东西。
我将问题分成两半,所以我现在有两个一对多的模式。一个解决了,但另一个解决了。
我们假设表FOO是一个标准的,无聊的表,它有一个简单的主键。这是一对多关系中的一个。
表BAR可以涉及FOO的多个键。事先不知道相关密钥的数量。
一个例子:
通常的联接表不起作用:
Table FOO_BAR
primary_key | foo_id | bar_id |
由于FOO返回3个唯一键,因此bar_id与foo_id具有一对一的关系。
有两个连接表似乎也不起作用,因为它仍然无法将foo_ids 3,4,5映射到单个bar_id。
Table FOO_TO_BAR
primary_key | foo_id | bar_to_foo_id |
Table BAR_TO_FOO
primary_key | foo_to_bar_id | bar_id |
我做错了什么?我做的事情比他们复杂吗?我应该如何处理这个问题?非常感谢您的帮助。
答案 0 :(得分:1)
FOO-BAR看起来对我好。为什么你认为这不起作用?
Say FOO = 1,2,3
Say BAR = A,B,C
Then an everything to everything relation will look like:
FOOBAR = 1, A; 1, B; 1, C; 2, A; 2, B; 2, C; 3, A; 3, B; 3, C
你可以使主键foo_id,bar_id,不需要单独的键,除非你真的想要一个,这样可以避免重复的关系。