私は、さまざまなアイテムが製品ごとに異なるカスタマイズ オプションを持つ e コマースを設計している最中であり、データベースを構築するための最良の方法を考えています。たとえば、赤や白だけでなく、さまざまなサイズの商品を販売したい場合がありますが、別の商品は緑または赤のみで販売され、サイズのオプションがない場合があります。以下に概説した素朴なアプローチがたくさんありますが、誰かアイデアがあるかどうか疑問に思います。NoSQL に移行する強い理由がない限り、このリレーショナルを維持したいと考えています。
- オプション 1: オプションの種類ごとに個別の表を作成します。たとえば、考えられるすべての色のリストを含むテーブル、このテーブルを色のサブセットで参照し、製品にも関連付けられている別のテーブルなどです。次に、カートに追加された実際の製品用に選択された色を扱う別のテーブルがあります。
- オプション 2:製品ごとのオプションの数は最小限になるため、考えられる各オプションの値を含む一連の列を用意しないでください。これは基本的に、「色」と呼ばれるテキスト列を持つ製品テーブルで、利用可能な色のオプションをリストするだけです。これは限定的すぎるので、個人的には好きではありません。画像を各色に関連付けたり、オプションに応じて価格を変更したりするにはどうすればよいですか?
- オプション 3:前の 2 つの組み合わせで、各製品には、利用可能なカスタマイズ オプションを参照する一連の列があります。たとえば、各製品には「色のオプション」列があり、null でない場合はその製品で使用でき、よく構造化されたオプションのセットを示します。