Как правильно спроектировать параметры товаров для категорий в интернет-магазине? Добрый день.
Интересует мнение и опыт по проектированию интернет-магазина.
Бриф:
Каждый товар принадлежит к определенной категории.
Следовательно у каждого товара есть свои особые атрибуты в зависимости от категорий.
Например:
Шины: ширина, высота, диаметр, сверловка.
Одежда: размер, цвет.
Каждый атрибут может быть выбран жестко из select.
Реализация:
1) Динамическая
Имеем две таблицы
item_category_property (id,category,name, values(сер. массив из значений для select/checkbox)
item_property_value (id, item_category_property, item, values
Плюс - легко сгенерировать из админки атрибуты для каждой категории.
Минусы - при больших объемах тупняки в выборках. Нельзя заточить интерфейс в административной части для более удобного использования
2) Статика
Одна таблица item_category_XX (Где xx - id категории). Будем хранить уже заранее определенные типы данных, что позволит нам удобное проектирование интерфейса и написание бизнес логики.
Минусы - при n-ом количестве категории для каждой категории неудобное создание таблицы ( придется на уровне БД самостоятельно руками)
Как хранить связи на программном уровне, чтобы делать JOIN?
Категория может быть дочерней, следовательно у родительской связи тоже есть параметры общие.
Есть ли какие-то универсальные варианты?

21 Авг 2019 в 07:08
193 +1
1
Ответы
1

Для проектирования параметров товаров для категорий в интернет-магазине можно использовать следующий подход:

Создание таблицы для категорий (categories) с полями id, name, parent_category_id (для определения родительской категории).

Создание таблицы для атрибутов товаров (attributes) с полями id, name.

Создание таблицы для соответствия атрибутов категориям (category_attributes) с полями id, category_id, attribute_id.

Создание таблицы для значений атрибутов товаров (attribute_values) с полями id, attribute_id, item_id, value.

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

Для реализации JOIN запросов, можно использовать связь между таблицами по их внешним ключам (например, category_id в таблице товаров с id в таблице категорий). Также, для получения атрибутов категории и их значений можно использовать соединение таблиц category_attributes и attribute_values по соответствующим id.

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир