parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Нет, конечно...

Sumo 21.11.2015 10:19

Вы храните атрибуты в таблице со структурой product_id - param_id - value, что противоречит идее реляционных баз данных. Поэтому выборки с фильтрацией из таких таблиц в РСУБД делаются очень непросто. Жить с этим можно, но придется серьезно повозиться с оптимизацией запросов.

Для того, чтобы решать такие проблемы разработчики делают постреляционные расширения в своих продуктах. Позволяют хранить слабоструктурированные и разреженные данные в полях, строить по ним индексы и делать выборки. Расширения зависят от продукта и никак нестандартизированы. Я уже не говорю, что есть целый класс nosql баз данных, которые заточены под хранение сложных документов.

MySQL-совместимые СУБД:
https://mariadb.com/kb/en/mariadb/dynamic-columns/
http://dev.mysql.com/doc/refman/5.7/en/json.html

У Постгреса целый набор типов данных: массивы, hstore, json/jsonb. Наверняка в Оракле и MSSQL есть аналогичные расширения.