Доброго вечера! Есть такая проблема: нужно реализовать в ИМ поиск товаров по определённым опциям, но проблема в том что, товары всех типов хранятся в одной таблице 'products', товары относятся к разным категориям, для примера: "сковородки", "кастрюли", "бокалы"), соответственно у всех товаров должен быть разный набор опций. Допусти для категории кастрюль должен быть поиск по "литражу", для сковородок по материалу(металл), для бокалов тоже материал(но стекло, хрусталь) Расширять в "ширину" таблицу 'products' для добавлений опций будет не правильно. Думаю надо привязать опции к таблице 'categories' и уже через связь с таблицей 'categories' продуктам задавать/получать нужный набор опций. Но вот нужную структуру выстроить в голове не получается. Посоветуйте что-нибудь дельное, пожалуйста.
что можно посмотреть: mysql entity attribute value Sphinx MVA multi valued attributes MongoDB параметрический поиск elasticsearch
Опции (ID, Название, ТипЗначения) СписокОпцийДляКатегории (ID, ID_Категории, ID_Опции) СписокОпцияДляТовара (ID, ID_Товар, ID_Опции, Значение) Собственно всё, это минимальная структура. При таком подходе запросы к базе могут получаться достаточно громоздкими, но это стандартный подход. Я лично давно так не делаю, просто добавляю поля в таблицу товары - админка позволяет все это правильно вводить. Есть ограничение по полям, но оно трудно достижимо.. можно только запутаться
1. У категорий товаров есть свой набор опций (полей). Это как бы список возможных опций для товаров внутри этой категории. 2. У конкретных товаров есть набор опций, который соответствует набору из его категории. Либо меньше (для оптимизации). 3. При создании товара должна быть возможность в админке заполнять эти дополнительные поля.
Таблицы: товары, категории, доп_параметры_категории, значения_доп_параметров_товаров. Всё описывается этой структурой. Чем искать: Субд или специализированными движками для поиска — решайте сами ибо субъективный вопрос. Удачи.