Я бы сделал стандартным способом:
Product
— id
— name
— color_one_id
— color_two_id
— style_id
— fabric_id
И соответствующие таблицы: COLOR, STYLE, FABRIC. Если у вас не супер-посещаемый проект, то больше ничего и придумывать не нужно.
Оптимизация 1. Если, например, стиль четко определен, то его можно хранить как ENUM.
Оптимизация 2. Если вас напрягают допзапросы, то храните списки цветов, стилей и материалов в виде серверных конфигов (в виде простых массивов).
По поводу клиентской части — используйте <select></select>
.