организовать цвета товара как отдельным товаром
это вообще просто как две копейки, одна таблица продукт
id|name|price|qty
1|Диван красный|20.02|3
2|Диван зеленый|25.04|1
хотите можете добавить еще json поле с характеристиками товара.
ну и фильтр тут элементарный по макс и мин - цена и по имени товара.
другое дело если вам надо реализовать атрибуты товара
начинайте гуглить со стороны
https://en.wikipedia.org/wiki/Entity%E2%80%93attri...
но там с фильтром будет уже сложно, насколько вы заморочитесь