2016-11-09 147 views
1

如何构建动态自引用多对多关系?动态自引用多对多关系

我有一个问题,我无法克服。

我有表:

Types: 
id 
name 

Products: 
id 
name 
type_id 

product_products 
parent_id 
child_id 

让我们假定我们有几个产品在产品表。其中一些是:
(名称是不相关)

CB1234 - products.type_id -> cardboard 
CBB999 - products.type_id -> cardboardbox 
CBP321 - products.type_id -> paper 

TSH123 - products.type_id -> tshirt 
FAB321 - products.type_id -> fabric 
THR321 - products.type_id -> thread 

现在我想告诉大家,我有一个用纸板和纸张类型的产品cardboardbox是product_product关系。在纸箱纸板和纸箱纸张关系,我想定义多少百分比的产品使用(一致性),使纸箱产品(可以说80/20,不相关)

我对不同的产品有不同的情况。现在我想要定义T恤织物和T恤线程之间的关系,但不是一致性,我想为此产品定义织物和线程成本。

产品和产品参数计数不固定。可能有500种不同的产品和它们之间的不同关系。这个问题有什么好的做法?有迹象表明,我想出了

  1. 很多手工的许多一对多的关系表
  2. 很多很多列的一些方法来product_product表

在这两种情况下,有一些事情我不不喜欢设计,但也许这是正确的方式来做到这一点,也许我从一开始就设计我的数据库是错误的。

回答

0

1)将要走的路 - 不知道会有真正做到“手”,一旦你制定了一切你想存储

product_product_consistency product_product_cost(会这样,而不是被表示为product_cost,然后计算product_product_consistency还是这样?)

什么是最终用法,你想问什么样的问题数据?

+0

感谢您的评论。我认为你可能是对的。 “最终用法是什么?你想问什么样的问题?” - 答案就是全部。我不知道未来的数量或类型问题。这就是为什么我需要它尽可能动态。 –

+0

一个非常通用的选项就像是一个带有relationship_type的product_relationship表,但我认为使用一个表来处理大量关系与关系数据库的工作方式是对立的,并且只是存储麻烦。每个表的清晰目的(“对象”或对象之间的关系)是做事的方式。 –