Как правильно организовать архитектуру таблиц фильтров

Всем привет, нужно реализовать такой функционал фильтров: Фильтры создаются в админке со значениями - Название фильтра и множество значений, при добавлении товара пользователь выбирает подходящее значение из списка и это значение привязывается к товару. Интересует как правильно организовать таблицы, я вижу это так:

  1. Таблица filter
id|name |visible|
 1|ткань|true   |
 2|цвет |true   |
  1. Таблица filter_atributes
id|filter_id|product_id|value |
 1|        1|        22|шелк  |
 2|        1|        23|хлопок|
 3|        2|        22|черный|

Всего 2 таблицы, у таблицы filter_atributes связь с таблицей products в которой товары, для того что бы выводить фильтры в категории. ПОдскажите насколько правильный такой подход или есть варианты более оптимальные? Сам проект на Laravel


Ответы (1 шт):

Автор решения: r.mcreal

Все зависит от устройства логики связи между фильтр-атрибут фильтра-товар. Если логика такая, что фильтр цвет имеет много значений (красный, синий и т.д.), а одно значение фильтра (например: красный) может относится к нескольким товарам, я вижу такую структуру.

Таблица 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          |
→ Ссылка