製品のバリエーション (オプションや属性ではなく、単なるバリエーション) をモデル化したいと考えています。
したがって、すべてのバリアントは製品そのものです。製品のすべてのバリエーションに有効な一般情報は、別のテーブルに保存されます (例: テキストによる説明)。わかりました。それで問題ないと思います。これ以上変更する必要はありません。
従属オプション (例: 色: 赤、サイズ: 小) については、2 つのバリエーションを作成しました。
バリエーション 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番目の解決策がより良いものであるかどうかはわかりません。どう思いますか?改善の余地はありますか?