item
таблица (содержит элементы)
item_id
name
options
таблица (содержит все параметры)
option_id
name
type -- color, front_color, back_color, size, shoe_size etc.
option_value
таблица (сохраняет все доступные значения для каждого параметра)
option_value_id
option_id
value
item_available_option
(сохраняет все доступные параметры для элемента)
item_id
option_id
item_available_option_value
(сохраняет все доступные параметрызначения для каждой позиции в опции)
item_id
option_id -- not required, but I added since it's easier to figure it out
option_value_id
orders
таблица (хранит заказы)
order_id
customer_id
order_date
billing_address
delivery_address
order_position
таблица (содержит позиции заказа)
order_pos_id
order_id
item_id
quantity
order_pos_option
таблица (содержит параметры для каждой позиции заказа)
order_pos_id
option_id
option_value_id
Это довольно общий подход, который допускает неопределенное количество параметров и значение параметракоторые определяются для каждого элемента.
Если вариантов не так много, альтернативой может быть указание конкретного типа, например:
colors
таблица (содержитвсе цвета)
color_id
name
item_available_colors
(доступно цветов для item_id)
item_id
color_id
sizes
таблица (содержит все размеры)
size_id
name
item_available_sizes
(доступные размеры для item_id)
item_id
size_id
order_position
таблица (содержит позиции заказа)
order_pos_id
order_id
item_id
quantity
color_id
size_id
Таблицы item
и orders
остаются прежними, все остальные больше не нужны.
Существует множество других возможных вариантов, которые предназначены для того, чтобы предоставить вам отправную точку.