1

私は、さまざまなアイテムが製品ごとに異なるカスタマイズ オプションを持つ e コマースを設計している最中であり、データベースを構築するための最良の方法を考えています。たとえば、赤や白だけでなく、さまざまなサイズの商品を販売したい場合がありますが、別の商品は緑または赤のみで販売され、サイズのオプションがない場合があります。以下に概説した素朴なアプローチがたくさんありますが、誰かアイデアがあるかどうか疑問に思います。NoSQL に移行する強い理由がない限り、このリレーショナルを維持したいと考えています。

  1. オプション 1: オプションの種類ごとに個別の表を作成します。たとえば、考えられるすべての色のリストを含むテーブル、このテーブルを色のサブセットで参照し、製品にも関連付けられている別のテーブルなどです。次に、カートに追加された実際の製品用に選択された色を扱う別のテーブルがあります。
  2. オプション 2:製品ごとのオプションの数は最小限になるため、考えられる各オプションの値を含む一連の列を用意しないでください。これは基本的に、「色」と呼ばれるテキスト列を持つ製品テーブルで、利用可能な色のオプションをリストするだけです。これは限定的すぎるので、個人的には好きではありません。画像を各色に関連付けたり、オプションに応じて価格を変更したりするにはどうすればよいですか?
  3. オプション 3:前の 2 つの組み合わせで、各製品には、利用可能なカスタマイズ オプションを参照する一連の列があります。たとえば、各製品には「色のオプション」列があり、null でない場合はその製品で使用でき、よく構造化されたオプションのセットを示します。
4

2 に答える 2

0

オプション4:

複数のオプションを処理するオプションテーブルを用意します。

Option
------
Option ID
Item ID
Category ID
Category Text

オプションIDは、自動インクリメントの連番です。

アイテムIDは、アイテムを指す整数です。

カテゴリIDは、カテゴリを表す整数です。たとえば、色は1、サイズは2になります。

カテゴリテキストは、実際の色またはサイズです。

この方法は、販売されたすべての赤いアイテムまたは販売されたすべてのXLアイテムを検索したくない場合にのみ意味があります。

このタイプのデータ設計は、エンティティ/属性データモデルと呼ばれます。

于 2012-10-03T17:55:21.527 に答える
0

次のスキーマのようなものを使用します。

テーブル「製品」

Product id
Product name
Product base price

テーブルの「サイズ」

Size ID
Size name
Additional price

テーブル「色」

Colour ID
Colour Name
Additional price

テーブル 'SaleItems'

SaleItem ID
Product ID
Size ID
Colour ID

顧客は「SaleItems」テーブルに含まれる商品を購入します。アイテムの例として、4 つの異なるサイズと 3 つの異なる色があるポロ T シャツがあります。この方法では、'SaleItems' テーブルに 12 行があり、それぞれが異なる特性を持ちますが、販売されたポロ シャツの数、販売された赤いシャツ (すべてのタイプの製品) の数、XL のアイテムの数を知ることができます。など

価格フィールドは必要ないかもしれませんが、基本的なポロ T シャツの価格は 10 単位です。S サイズには追加料金はありませんが、XL サイズには 10% の追加料金がかかります。ほとんどの色のコストはおそらく同じですが、一部のエキゾチックな色のコストは 10% 高くなる場合があります。このエキゾチックな色の XL ポロ T シャツの価格は、10 * 1.1 * 1.1 = 12.1 単位になります。

このスキーマは、すべての製品がすべてのサイズと色を持つことができることを前提としています。

于 2012-10-04T09:01:55.307 に答える