Есть некая таблица
products, содержащая в себе всевозможные товары. Эти товары принадлежат к самым разным категориям — начиная от утюга, заканчивая аудио-сабвуферами.
Возник вопрос, как хранить эти все товары в
одной таблице если у каждого товара свой набор фильтров? То есть, например, для категории
"утюг" в таблице
products должны быть поля "максимальная температура", "можно гладить шерсть" и т.д. А для категории
"аудио-сабвуфер" в таблице
products должны быть поля "выходная мощность", "материал корпуса колонок" и т.д...
Очевидно, что получается каша. Например, у товара категории "утюг" фигурирует ненужное поле "материал корпуса колонок" :-)
Как правильно хранить товары в реляционной БД? Например, Postgres? Неужели для каждой категории придётся заводить свой набор фильтров?
Можно ли, как вариант, в таблице
products оставить только
самые главные (общие для всех категорий) поля, а остальные хранить в поле
filters в виде строки? Чтобы web-приложение "парсило" строку из этого поля.
Т.е., вид таблицы такой:
CREATE TABLE `products` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`category_id` INT(11),
`name` VARCHAR(255),
`type_id` INT(11), -- Общий для всех фильтр "Тип"
`vendor_id` INT(11), -- Общий для всех фильтр "Производитель"
`filters` VARCHAR(255), -- Тут все специфические фильтры
)
P.S.: Менять СУБД не можем. Только PostgreSQL.