Представление продуктов электронной коммерции и вариаций чисто в базе данных

У меня есть хранилище электронной коммерции, которое я создаю. Я использую Rails/ActiveRecord, но это действительно не необходимо для ответа на этот вопрос (однако, если Вы знакомы с теми вещами, не стесняйтесь отвечать с точки зрения направляющих/AR).

Одно из требований хранилища - то, что это должно представить два типа продуктов:

  1. Простые продукты - это продукты, которые просто имеют одну опцию, такую как CD полосы. Это имеет основную цену и количество.
  2. Продукты с изменением - это продукты, которые имеют несколько опций, таких как футболка, которая имеет 3 размера и 3 цвета. Каждая комбинация размера и цвета имела бы свою собственную цену и количество.

Я сделал такого рода вещь в прошлом и сделал следующее:

  • Имейте таблицу продуктов, которая имеет основную информацию для продукта (заголовок, и т.д.).
  • Имейте таблицу вариантов, которая содержит цену и информацию о количестве для каждого типа варианта. Продукты have_many Варианты.
  • Для простых продуктов у них просто был бы связанный Вариант того.

Есть ли лучшие способы, которыми я мог делать это?

9
задан Craig Stuntz 12 January 2010 в 05:28
поделиться

2 ответа

Ваш путь кажется довольно гибким. Это было бы похоже на мой первый разрез.

0
ответ дан 3 November 2019 в 03:47
поделиться

Я работал над продуктом электронной коммерции несколько лет назад, и мы сделали это так, как вы описали. Но мы добавили еще один слой для обработки нескольких атрибутов на одном продукте (размер и цвет, как вы сказали). Мы отслеживали каждый атрибут отдельно, и у нас была таблица «Skus», которая перечисляла каждую комбинацию атрибутов, которая была разрешена для каждого продукта. Что-то вроде этого:

attr_id   attr_name  
1         Size  
2         Color  

sku_id    prod_id    attr_id    attr_val  
1         1          1          Small  
1         1          2          Blue  
2         1          1          Small  
2         1          2          Red  
3         1          1          Large  
3         1          2          Red  

позже мы добавили инвентарь отслеживания и другие функции, и мы связали их в идентификаторы SKU, чтобы мы могли отслеживать каждый отдельно.

8
ответ дан 3 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: