0

類似しているが番号が異なる製品を検索するためのテーブル スキーマとクエリを設計します。この設計は、数百または数千の製品には適していません。

類似商品を検索したい。

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

-> 製品 X が製品 Y と同じであることを意味します

製品Aの製品を見つけた場合は問題ありませんが、製品B、C、またはDに適合する製品を見つけたい場合、クエリ/テーブルをどのように設計できますか?

これは私の2つのテーブルです

記事

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

理解を深めるために、ID の代わりにテキストを使用します。私の実際のテーブルにはIDがあります。

相互参照製品

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 に答える