我正在寻找一个最佳实践解决方案....数据库设计 - 如何将项目与同一个表中的多个项目相关联?
我有一个表,其中包含产品称为产品,某些产品有其他产品(选项),需要与他们关联,以便当用户查看产品他们也收到与其相关的所有其他产品(选项)的列表。
我的第一本能是创建一个简单的参考表。虽然这有效,但您会发现可能会有大量冗余数据。
**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不是唯一的,因为一个密钥应该能够引用多个产品(选项)。
这个工作稍微好一些,但如果所有选项集都假设是唯一的,它仍然会导致问题。这种方法只允许一个设置参考(一组选项)与产品相关联。
我相信解决这个问题最有效的方法之一是创建所有独特的选项集,然后将每个独特的集合引用到产品中。一些帮助?
是否所有的产品选项都依赖于一个且只有一个产品?产品选件可以独立销售吗? – 2011-04-14 16:36:01
所有的产品选项都不依赖于一个且只有一个产品。产品可以是一个系列的一部分,通常一个选项被设计为适合整个系列..但并非总是如此。选项可以独立销售,这就是为什么我将它们包含在产品表中。 – payling 2011-04-14 16:43:31