2013-05-31 187 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。