Интернет-магазин. Как хранить разновидности товаров в БД?

Проектирую БД для интернет-магазина. Есть необходимость хранить информацию о похожих товара. Например, упаковка может быть 100, 200 или 500 грамм. Вкус может быть шоколадным или клубничным. Соответственно описания будет идентичными, а цены и кол-во на складе разными. В каталоге товар должен быть представлен одной позицией с набором опций. Как правильно хранить все это в БД?
  • Вопрос задан
  • 13887 просмотров
Пригласить эксперта
Ответы на вопрос 4
raskumandrin
@raskumandrin
Свойства вынести в отдельные таблицы (по ним ещё потом делать фильтры товаров).
Сделать таблицу для связи товара и свойства, в неё же добавить цену, остатки на складе и доступность позиции для продажи (если например анализируется информация от поставщиков).
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
Плюс неоднозначная работа с такими базовыми параметрами как «цена», «количество».

А в чем там проблема?
Ответ написан
Комментировать
alex_dm
@alex_dm
Я на одном из проектов сделал так:

product_category
product_group
product
product_attribute
product_attribute_value

Возможно product_group будет лишим, но в моем случае он был необходим (специфика товара).
Ответ написан
Комментировать
Собственно проблема в следующем: есть таблица товаров, есть таблица свойств к ним, допустим ищем по свойствам и находим 1000 различных id товаров - выдергивать из MySQL данные видимо таким образом (SELECT * FROM goods WHERE id IN (array)), где array - массив из 1000 элементов - пожалуй все согласятся, что такой запрос при посещаемости магазина даже в 1кпользователей в сутки и при размерах таблицы хотя бы в несколько десятков тысяч товаров - рушит систему, почем зря.

Решение с хранением товаров в альтернативных базах не рассматривается (т.к. допустим в документоориентированных подобный запрос отработает за константу по времени). Хочется услышать варианты именно с MySQL.

P.S. все предложенные выше - просто разновидности очевидного, не более того, особенно выложенный дамп базы - слишком много буков;) но по сути именно то, что я описал выше:)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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