5

製品のバリエーション (オプションや属性ではなく、単なるバリエーション) をモデル化したいと考えています。

したがって、すべてのバリアントは製品そのものです。製品のすべてのバリエーションに有効な一般情報は、別のテーブルに保存されます (例: テキストによる説明)。わかりました。それで問題ないと思います。これ以上変更する必要はありません。

従属オプション (例: 色: 赤、サイズ: 小) については、2 つのバリエーションを作成しました。

バリエーション 1:

図1

テーブルの簡単な説明:

  • オプション: 利用可能なすべてのオプション (色、サイズ、素材など) を保存します。
  • 値: 使用可能なすべての値を格納します (赤、青、緑、小、中、大、鉄、木)
  • option_value: オプションと値のすべての可能な組み合わせを格納します (色: {赤、青、緑}、サイズ: {小、中、大}、...
  • product_option_value が製品とそのオプションを関連付けるようになりました (例: color:red, size:small, product_id:1; color:blue, size:small, product_id:1)

わかりました、それは非常にうまくいくと思います - 左側に UI を構築するためのメタデータ (オプション、値、組み合わせ) の説明 - 右側に製品へのリンク。

しかし、1 つの問題があります...オプションと値の可能な組み合わせは、GUI を構築するために記述されており、プログラムで検証することは可能ですが、データベースは検証できません。

したがって、バリアント 2を作成しました。

図2

2番目の解決策がより良いものであるかどうかはわかりません。どう思いますか?改善の余地はありますか?

4

1 に答える 1

0

にすでに存在する値product_option_value のみに制限したい場合option_valueは、はい、2番目のモデルの方が適しています。

ただし、このモデルでは、単一の値を複数のオプション間で共有できます(たとえば、「赤」は「色」と「サイズ」の両方である可能性があります)。これはあなたが望んでいたものではないと思います。その場合、モデルは次のようになります。

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

于 2012-07-26T18:31:27.373 に答える