Database 仅使用数量不可预测的外键构建多对多db模式
下午好(至少在这里附近) 我有一个多对多关系模式,我很难建立它。主要的问题是我只使用主键和外键(没有用于简化事情的varchar或enum),多对多关系的数量是不可预测的,并且随时都可能增加 我环顾四周,看了各种各样的问题,找不到直接解决这个问题的东西 我将问题一分为二,因此现在有两个一对多模式。一个问题解决了,但另一个问题让我感到不适 让我们假设表FOO是一个标准的、无聊的表,它有一个简单的主键。这是一对多关系中的一对多 表栏可以与FOO的多个键相关。相关钥匙的数量事先不知道 例如:Database 仅使用数量不可预测的外键构建多对多db模式,database,schema,database-schema,schema-design,Database,Schema,Database Schema,Schema Design,下午好(至少在这里附近) 我有一个多对多关系模式,我很难建立它。主要的问题是我只使用主键和外键(没有用于简化事情的varchar或enum),多对多关系的数量是不可预测的,并且随时都可能增加 我环顾四周,看了各种各样的问题,找不到直接解决这个问题的东西 我将问题一分为二,因此现在有两个一对多模式。一个问题解决了,但另一个问题让我感到不适 让我们假设表FOO是一个标准的、无聊的表,它有一个简单的主键。这是一对多关系中的一对多 表栏可以与FOO的多个键相关。相关钥匙的数量事先不知道 例如: 从查询中
Table FOO_BAR
primary_key | foo_id | bar_id |
因为FOO返回3个唯一键,这里bar_id与FOO_id有一对一的关系
拥有两个连接表似乎也不起作用,因为它仍然无法将foo_id 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 |
我做错了什么?我是不是让事情变得更复杂了?我应该如何处理这个问题?非常感谢您的帮助。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\u id、bar\u id,除非您真的需要,否则不需要单独的键,这样可以避免重复关系。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,不需要单独的键,除非您确实需要一个,这将避免重复关系