Моделирование предметов и опций для корзины - PullRequest
1 голос
/ 19 сентября 2011

Я работаю над приложением корзины для покупок, и я в значительной степени озадачен тем, как моделировать Предметы и Опции в соответствии со следующими требованиями:

  1. Каждый Предмет может иметь ноль или более Опций (цвет, размер и т. д.)
  2. Каждый параметр может иметь несколько разных значений (например, зеленый, синий, красный и оранжевый для цвета)
  3. Два элемента с одинаковым параметром могут иметь разные значения для этого параметра.(например, вы можете заказать футболку зеленого или оранжевого цвета, и вы можете заказать бейсболку синего или красного цвета)

Я уверен, что это довольно распространенный сценарий, но этоне тот, с которым я когда-либо сталкивался.Есть идеи?

1 Ответ

5 голосов
/ 19 сентября 2011

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 остаются прежними, все остальные больше не нужны.

Существует множество других возможных вариантов, которые предназначены для того, чтобы предоставить вам отправную точку.

...