2013-05-31 140 views
0

我会设计一个表模式和查询,以搜索类似但具有不同数量的产品。这种设计对于成百上千种产品并不好。MySQL交叉参考不同的产品

我想寻找类似的产品。

Product A -> Product B 
Product A -> Product C 

- >指产品X相同Y产品

当我发现产品产品A不是问题,但我怎么能设计查询/表,如果我想找到产品适用于产品B,C或D?

这是我的两个表

牛逼的文章

id | text 
1 | Product A 
2 | Product B 
3 | Product C 
4 | Product D 

为了更好地理解,我将改用ID的文本。 在我真正的桌子上有它的ID。

T交叉引用产品

id_1 | id_2 
    A | B 
    A | C 
    A | D 
    B | A 
    B | C 
    B | D 
    C | A 
    C | B 
    C | D 
    D | A 
    D | B 
    D | C 

提前感谢!

+0

你有什么问题?这是表示多对多关系的正常方式。 – Barmar

+0

你困扰你必须同时拥有'A - > B'和'B - > A'吗? – Barmar

+0

可能是http://stackoverflow.com/questions/16445993/sql-selecting-the-most-similar-product/16447846#16447846 – Akash

回答

0

这看起来不像我的SQL- Selecting the most similar product的副本。问题不在于如何找到最接近的匹配,而是如何设计相关数据表。

A对B的意义是什么?我认为你需要给出更多的细节才能得到一个好的答案。

如果A,B & C均为相同的,因为它们都属于输入“foo”的话,我认为这将会是最好添加一个“类型”列:

id | type | text 
1 | foo | A 
2 | foo | B 
3 | foo | C 
4 | bar | D 

然后你就可以很容易找到所有foo类型的东西。

如果您确实需要表示多对多关系,请使用您建议的相交表。只要你索引id_1和id_2(和你的文章中的id),性能应该会很好。数百或数千行真的不是很适合mysql。