まず、製品にカテゴリ ID とサブカテゴリ ID がありません。サブカテゴリにのみ属します。必要に応じて、サブカテゴリから親カテゴリを見つけることができます。
products (id, subcategory_id, name)
categories (id, name)
subcategories (id, category_id, name)
すべての製品で異なる可能性のある属性については、次のようにすることができます。
attribute_types (id, name)
attributes (id, attribute_type_id, value)
products_attributes (id, product_id, attribute_id)
したがって、attribute_types テーブルには次のようなものがあります。
id | name
-----------------------------
1 | T-Shirt Size
2 | Shoe Size (US)
3 | Colour
4 | Batteries Included
あなたの属性テーブルで:
id | attribute_type_id | value
------------------------------
1 | 1 | Small
2 | 1 | Medium
3 | 1 | Large
4 | 2 | 9
5 | 2 | 9.5
6 | 2 | 10
7 | 2 | 10.5
8 | 2 | 11
9 | 3 | Red
10 | 3 | Blue
11 | 3 | Green
12 | 3 | Yellow
13 | 3 | Black
14 | 4 | Yes
15 | 4 | No
そして、products_attributes テーブルに、製品が持つ属性を追加するだけです。
id | product_id | attribute_id
------------------------------
1 | 456 | 6
2 | 456 | 13
その商品の場合、サイズ 10 の靴、ブラックです。