Чистое представление продуктов и вариантов электронной коммерции в базе данных - PullRequest
9 голосов
/ 12 января 2010

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

Одним из требований магазина является то, что он должен представлять два вида товаров:

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

Я делал подобные вещи в прошлом и сделал следующее:

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

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

Ответы [ 2 ]

8 голосов
/ 12 января 2010

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

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, чтобы мы могли отслеживать каждое из них в отдельности.

0 голосов
/ 12 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...