Как правильно организовать архитектуру таблиц фильтров
Всем привет, нужно реализовать такой функционал фильтров: Фильтры создаются в админке со значениями - Название фильтра и множество значений, при добавлении товара пользователь выбирает подходящее значение из списка и это значение привязывается к товару. Интересует как правильно организовать таблицы, я вижу это так:
- Таблица filter
id|name |visible|
1|ткань|true |
2|цвет |true |
- Таблица filter_atributes
id|filter_id|product_id|value |
1| 1| 22|шелк |
2| 1| 23|хлопок|
3| 2| 22|черный|
Всего 2 таблицы, у таблицы filter_atributes связь с таблицей products в которой товары, для того что бы выводить фильтры в категории. ПОдскажите насколько правильный такой подход или есть варианты более оптимальные? Сам проект на Laravel
Ответы (1 шт):
Все зависит от устройства логики связи между фильтр-атрибут фильтра-товар. Если логика такая, что фильтр цвет имеет много значений (красный, синий и т.д.), а одно значение фильтра (например: красный) может относится к нескольким товарам, я вижу такую структуру.
Таблица filters:
id|name |visible|
1|цвет |true |
Таблица filter_atributes:
id|filter_id|value |
1| 1|Красный |
2| 1|Синий |
3| 1|черный |
Таблица product_filter_atributes:
id|filter_atribute_id|product_id |
1| 1|4 |
2| 2|4 |
3| 1|12 |