数据库设计 - 如何将项目与同一个表中的多个项目相关联?

时间:2011-04-14 15:59:34

标签: database-design

我正在寻找最佳实践解决方案......

我的表中包含称为产品的产品,某些产品具有需要与其关联的其他产品(选项),以便当用户查看产品时,他们还会收到与其关联的所有其他产品(选项)的列表

我的第一直觉是创建一个简单的参考表。虽然这有效,但您会发现可能存在大量冗余数据。

**Ref table**
Product, product (option) to be associated

widget1, widget2
widget1, widget3
widget4, widget2 and so on...

我的下一次尝试是合并密钥表。

**Products table**
product_id
key_id

**Key table**
key_id
product_id_fk

key_id不会是唯一的,因为密钥应该能够引用多个产品(选项)。

这样做效果稍好但如果所有选项集都被认为是唯一的,它仍然会导致问题。此方法仅允许将一个集合引用(选项组)与产品相关联。

我认为解决此问题的最有效方法之一是创建所有唯一的选项集,然后引用产品的每个唯一集。一些帮助?

1 个答案:

答案 0 :(得分:1)

参考表中的“冗余数据”是什么?

  • A& A之间的关系B总是倒数?如果我们谈论产品和选项,我倾向于不这么认为(也就是说,如果你出售手机提供附件列表作为选项,它可能是有意义的,如果有人可能没有意义看着手机套,建议他们买新手机)。但是,如果它们是互惠的,widget2, widget1行将是多余的,因为您已经捕获了与widget1, widget2行的关系。
  • 我假设你在说明你的参考表时,你在widget1,widget2和widget3的product_id存储了你写“widget1”而不是存储实际产品名称的列。比product_id
  • 更长