0

我会设计一个表模式和查询来搜索相似但数量不同的产品。这种设计不适用于成百上千的产品。

我想搜索类似的产品。

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

提前致谢!

4

1 回答 1

0

这看起来不像SQL 的副本——选择与我最相似的产品。问题不在于如何找到最接近的匹配,而是如何设计相关数据表。

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(以及您的 t 文章中的 id)性能就应该没问题。数百或数千行对于 mysql 来说真的不是很多。

于 2013-06-03T23:06:05.877 回答