0

問題を解決しています。製品をそのバリエーションとともにデータベースに保存する方法です。私の現在のシステムは次のようになります。

PARAMETERS - id_parameter (some parameter value - i.e. size XXL),...
PRODUCTS_PARAMTERS - id_product, id_paramter
CATEGORIES - id_category,...
PRODUCTS_CATEGORIES - id_product, id_category
FILES - id_file,...
PRODUCTS _FILES - id_file, id_product
PRODUCTS - id_product, description, price, vat, is_variant (1 or 0, if 1, product is variant), main_product(id is variant, here is stored main products id)

このシステムでは、商品がバリエーションでない場合、価格だけを記入することはありません。このシステムには、コードや関数をあまり編集する必要がないという長所があります...短所はサイズだと思います。主な製品とバリエーションのロットまたは行があるため、クエリは 10,000 行などを確認する必要があります...

さて、私はそれについて少し考えていましたが、このアイデアを思いつきました: 主な製品とバリエーションを別々のテーブルに保存します。次に、マッピング テーブルを編集する必要があります。id_product が製品バリアント テーブルまたはメイン製品テーブルからのものであるかどうかを指定する列を追加できます。または、他のマッピング テーブルを作成する必要があります。1 つのマッピング テーブルには主要な製品のパラメータを格納し、2 つ目のマッピング テーブルには製品のバリエーションのパラメータを格納します...

この2つのソリューションについてどう思いますか? どちらが良いでしょうか?私にとって最も重要なのはスピードです - 特に製品をフィルタリングするとき...

ご意見やアイデア、作り方をよろしくお願いします。

4

1 に答える 1

1

いくつかの概念が 1 つのテーブルにマージされる場合、一般的には良い考えではありません。n 個の製品と m 個のバリエーションがある場合、製品のみでフィルタリングする場合は常に、クエリで n * m レコードを処理する必要があります。それらが分離されている場合、この種のクエリは n レコードのみから検索します。また、バリアントを説明に保存すると、名前が変更された場合に説明を更新する必要があります。通常のフォームについて読んでください。それらは非常に役立ちます。

于 2015-01-24T15:25:42.127 に答える