下午好(至少在这附近),
我有一个多对多关系模式,但在构建时遇到了麻烦。主要问题是我只使用主键和外键(没有 varchars 或枚举来简化事情),并且多对多关系的数量是不可预测的,并且可以随时增加。
我环顾了各种问题,找不到直接解决这个问题的东西。
我把问题分成两半,所以我现在有两个一对多的模式。一个解决了,但另一个让我很不舒服。
让我们假设表 FOO 是一个标准的、无聊的表,它有一个简单的主键。它是一对多关系中的一个。
表 BAR 可以与 FOO 的多个键相关。事先不知道相关键的数量。
一个例子:
- 从查询 FOO 返回 ids 3、4、5。
- BAR 需要一个与 3、4、5 相关的唯一键(尽管可能返回任意数量的 id)
通常的连接表不起作用:
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 |
我究竟做错了什么?我让事情变得比他们更复杂吗?我应该如何处理这个问题?非常感谢您的帮助。