2

フィルタがカテゴリに依存している場合に、フィルタを使用して検索フォームを実行するためのベストプラクティスは何ですか?例:eBayにアクセスしてカテゴリを選択すると、携帯電話の左側のフィルタ(フィルタ:ブランド、オペレーティングシステムなど)またはファッションカテゴリ(フィルタ:サイズ、色など)が異なります。 。)..。

私の考えでは、DBでより多くのテーブルを作成します。1つのカテゴリ(cat_cellphone、cat_fashion ...)の各テーブル。次に、カテゴリに応じてこれらのテーブルの1つに製品を配置します(1つの列にカテゴリIDが含まれる1つの製品テーブルではありません)。これらのテーブルは、列名がカテゴリによって特徴付けられる場合に異なります。次に、さらに検索フォームを実行し、フィルターがカテゴリーに属するフォームを呼び出す必要があります。

それは良い概念ですか、それとも大きなプロジェクトで受け入れられている他の慣行がありますか?

4

2 に答える 2

3

いいえ、複数のテーブルを持つことは悪い考えです。

一般に。代わりに、2列にわたる主キーを持つテーブルを使用してください。(主キーは複数の列にまたがることがあります。)

列はcategoryname/filternameになります。

このような主キーが気に入らず、常に自動インクリメント列を使用する場合でも、2つの列にインデックスを作成できます。

列は次のようになります:id / categoryname / filtername / filtertext

于 2013-01-02T10:35:19.267 に答える
1

複数のテーブルを使用して商品を保存することはお勧めできません。カテゴリが重複する商品があり、同じ商品が複数のテーブルに保存されるためです。

ID、product_number、descriptionなどの製品テーブルとカテゴリテーブルを使用して、さまざまなカテゴリを保存するだけです。次に、次のように直接リンクできます。

製品表:

ID product_number description category
1  00001          Screwdriver 1

カテゴリテーブル:IDの説明1ツール

また、サブカテゴリの親をアドレス指定することで、サブカテゴリを使用するために追加の列を使用してカテゴリテーブルを拡張することもできます。

サブカテゴリのあるカテゴリテーブル:

ID description      parent
1  Tools            NULL
2  Automatic tools  1

また、製品テーブルからカテゴリテーブルに直接リンクしたくない場合は、リンクテーブルを使用できます。

製品カテゴリ:

Product_ID Category_ID
1          1

これがあなたの質問に答えることを願っています。

編集、追加されたフィルターテーブル:

製品のフィルタリングを追加するには、次のように、フィルターのテーブルとリンクテーブルを使用できます。

フィルター:

Filter_ID description value
1         brand       Bosch
2         brand       Bahco
3         type        Phillips

Product_Filter:

Product_ID Filter_ID
1          1
1          3

そうすれば、複数のフィルターを各製品にリンクして、同じフィルターを複数回使用できます。

フィルタ値に別のテーブルを使用してこれをさらに拡張することもできますが、それは物事を少し複雑にする可能性があります。

フィルター:

Filter_ID description value
1         brand       1

Filter_value:

Filter_ID value
1         Bosch
2         Bahco
于 2013-01-02T10:47:58.687 に答える