product_var_mst_rel テーブル定義
概要
商品とバリエーションマスターの多対多関係を管理する中間テーブル。商品がどのバリエーションマスターを使用するかを定義する。
用途: 商品に対するバリエーションの組み合わせを選択する画面(EC-CUBEでいう規格選択画面)で利用する。商品登録時に「この商品はどのバリエーション軸(サイズ、色等)を使うか」を事前選択し、SKU作成画面で選択肢を絞り込むために使用する。
軸数制約: 商品で選択した軸数と、実際に作成するSKUの軸数は一致する必要がある。2軸選択の場合は2軸でのSKU登録、3軸選択の場合は3軸でのSKU登録を強制する。
テーブル情報
| 項目 | 値 |
|---|---|
| テーブル名 | product_var_mst_rel |
| エンジン | InnoDB |
| 文字セット | utf8mb4 |
| 照合順序 | utf8mb4_unicode_ci |
| コメント | 商品-バリエーションマスター関連 |
カラム定義
| カラム名 | 型 | NULL | デフォルト | キー | 説明 |
|---|---|---|---|---|---|
| product_id | BIGINT UNSIGNED | NOT NULL | - | PK,FK | 商品ID(products.id) |
| product_var_mst_id | BIGINT UNSIGNED | NOT NULL | - | PK,FK | バリエーションマスターID(product_var_msts.id) |
| created_at | TIMESTAMP | NULL | NULL | - | 作成日時 |
| updated_at | TIMESTAMP | NULL | NULL | - | 更新日時 |
インデックス
| 種別 | 名称 | 対象カラム | 説明 |
|---|---|---|---|
| PRIMARY KEY | pk_product_var_mst_rel | product_id, product_var_mst_id | 複合主キー |
| INDEX | idx_product_var_mst | product_var_mst_id | バリエーションマスター別の検索 |
外部キー制約
| 名称 | 対象カラム | 参照先 | ON DELETE | ON UPDATE | 説明 |
|---|---|---|---|---|---|
| fk_product_var_mst_rel_product | product_id | products(id) | CASCADE | RESTRICT | 商品削除時に関連レコードも削除 |
| fk_product_var_mst_rel_mst | product_var_mst_id | product_var_msts(id) | RESTRICT | RESTRICT | バリエーションマスター削除時は商品との関連を先に削除する必要がある |
リレーション
| 関連先テーブル | 関連タイプ | 外部キー | 参照先 | ON DELETE | ON UPDATE | 説明 |
|---|---|---|---|---|---|---|
| products | N:1 | product_id | id | CASCADE | RESTRICT | 商品-バリエーションマスター関連は商品に属する |
| product_var_msts | N:1 | product_var_mst_id | id | RESTRICT | RESTRICT | 商品-バリエーションマスター関連はバリエーションマスターに属する |
データ例
Tシャツ商品の場合
| product_id | product_var_mst_id |
|---|---|
| 100 | 1 (サイズ) |
| 100 | 2 (色) |
| 200 | 1 (サイズ) |
| 200 | 3 (丈) |
| 300 | 4 (容量) |
| 300 | 5 (味) |
備考・注意事項
データ整合性の方針
真実の情報源(Single Source of Truth)
- 実データ:
product_var_mst_val_combsが真実の情報源 - 補助情報:
product_var_mst_relは商品登録時のUI補助情報
不整合が発生する可能性
以下のケースでデータ不整合が発生しうる:
ケース1: マスター選択したが、SKUを作成していない
→ 商品詳細ページで選択肢を表示できない注意: UIの想定フローでは、選択していない軸の値は選択肢に表示されないため、選択していない軸を使用する不整合は基本的に発生しない