7

カテゴリに製品フィルタリングを実装したいのですが、適切な DB スキーマについて質問があります。今のところ、次のテーブルがあります。

カテゴリー:

1. id
2. category
3. description

製品:

1. id
2. category_id
3. product
4. image
5. price

属性:

1. id
2. attribute

カテゴリ_属性:

1. category_id
2. attribute_id

そして、私が持っている質問は、どのテーブルを作成する必要があり、どの列がさまざまな種類の値、属性値、製品属性値などを格納する必要があるかということです.

さらに 3 つのテーブルを作成するのが普通でしょうか。

:

1. id
2. value

属性値:

1. attribute_id
2. value_id

Products_Attributes_Values :

1. product_id
2. attribute_id
3. value_id

最後のテーブルを台無しにしてしまいました。何を保存してフィルタリングするのが良いでしょうか?

4

1 に答える 1

13

達成しようとしているのは、エンティティ属性値(EAV)または場合によっては行モデリングソリューションです。このタイプの構造は、さまざまなかなりの理由で大部分が眉をひそめていることに注意してください。

しかし、私は、EAVはEVILであると主張しましたが、そうでない場合除きますこれらのまれな例外の1つは、製品のプロパティを追跡している製品カタログの場合であり、これらを取得して印刷する必要がある場合を除いて、これらのプロパティは(システムにとって)それほど興味深いものではありません。製品のWebページや比較グリッドなど。

次のような設計を検討してください。

ここに画像の説明を入力してください

このようなモデルで行っていることは、特定のカテゴリの製品が持つべき属性、それらの属性が持つ可能性のある値、そして各特定の製品が各属性に対して持つ値を説明することです。

この設計には、EAVが課す通常の制限がすべてあります。ただし、「直径8mmのビーズはどれですか?」などの質問をしたい場合。それはかなり簡単です。

于 2013-01-07T22:21:36.890 に答える