Владимир83
Новичок
Задача:
Есть разделы продукции в них соответсвенно товары.
В разных разделах различный набор параметров, по которым происходит фильтрация товаров в данном разделе.
Мои размышления:
Пока без того условия что параметры могут быть разными: число, список,текст и т.п.
------------------
1) сделать просто в таблице кучу полей под каждый параметр.
Плюсы:
Самый простой вариант, легко сделать добавление, легко сделать фильтр.
Минус:
такое подойдет только если параметров какое то конечное число и то не очень большое, и известны сразу все.
------------------
2) Создать список параметров (отдельную таблицу).
у каждого раздела выбрать нужные параметры (тут получается ограничиваем кол-во парамтров у раздела - допустим 30 штук должно хватит почти под все)
у таблицы товаров делаем 30 полей param1, param2 .....
Плюсы:
в принципе тут все хорошо, куча параметров, добавление сделать не сложно, ну и фильтр тоже реализовать просто.
Минусы:
-тут товар без категории теряет свои параметры т.е. я не смогу товар из одного раздела перенести в другой раздел (даже если набор параметров будет один и тотже, просто в другом порядке)
так как в одной категории первый параметр у товара будет "вес", а в другой "высота"
- если у раздела удалить допустим один параметр например 4 параметр "Вес" и потом добавить новый параметр "Высота" - у всех товаров получится путаница так как в param4 у них забиты данные по весу.
т.е. тут как то нужно жестко регулировать удаление изменение параметров у раздела.
- если будут разные типы у параметров нужно уже как то разграничивать поля param у товара, т.е. далать например 15 int, 15 varchar- и все вытекающие отсюда проблемы при реализации
------------------
3) Создать список параметров(отдельную таблицу).
у каждого раздела выбрать нужные параметры - тут вообще без ограничений.
у товара все значения параметров будут хранится в отдельной таблице goods_param{good_id, param_id, value}
Плюс: максимальная универсальность
Минусы:
-Сложно реализовать добавление.
-Как реализовать фильтр не соображу толком, городить кучу селектов с выбором из талицы goods_param значение good_id чтобы потом их подставить в выборку из таблицы goods.
Все как то грамоздко и не понятно как быстро будут работать такие запросы если данных будет много.
====================
Это все еще не учитываю что параметры могут быть разных типов.
Помогите кто уже сталкивался или реализовавал такое.
Есть разделы продукции в них соответсвенно товары.
В разных разделах различный набор параметров, по которым происходит фильтрация товаров в данном разделе.
Мои размышления:
Пока без того условия что параметры могут быть разными: число, список,текст и т.п.
------------------
1) сделать просто в таблице кучу полей под каждый параметр.
Плюсы:
Самый простой вариант, легко сделать добавление, легко сделать фильтр.
Минус:
такое подойдет только если параметров какое то конечное число и то не очень большое, и известны сразу все.
------------------
2) Создать список параметров (отдельную таблицу).
у каждого раздела выбрать нужные параметры (тут получается ограничиваем кол-во парамтров у раздела - допустим 30 штук должно хватит почти под все)
у таблицы товаров делаем 30 полей param1, param2 .....
Плюсы:
в принципе тут все хорошо, куча параметров, добавление сделать не сложно, ну и фильтр тоже реализовать просто.
Минусы:
-тут товар без категории теряет свои параметры т.е. я не смогу товар из одного раздела перенести в другой раздел (даже если набор параметров будет один и тотже, просто в другом порядке)
так как в одной категории первый параметр у товара будет "вес", а в другой "высота"
- если у раздела удалить допустим один параметр например 4 параметр "Вес" и потом добавить новый параметр "Высота" - у всех товаров получится путаница так как в param4 у них забиты данные по весу.
т.е. тут как то нужно жестко регулировать удаление изменение параметров у раздела.
- если будут разные типы у параметров нужно уже как то разграничивать поля param у товара, т.е. далать например 15 int, 15 varchar- и все вытекающие отсюда проблемы при реализации
------------------
3) Создать список параметров(отдельную таблицу).
у каждого раздела выбрать нужные параметры - тут вообще без ограничений.
у товара все значения параметров будут хранится в отдельной таблице goods_param{good_id, param_id, value}
Плюс: максимальная универсальность
Минусы:
-Сложно реализовать добавление.
-Как реализовать фильтр не соображу толком, городить кучу селектов с выбором из талицы goods_param значение good_id чтобы потом их подставить в выборку из таблицы goods.
Все как то грамоздко и не понятно как быстро будут работать такие запросы если данных будет много.
====================
Это все еще не учитываю что параметры могут быть разных типов.
Помогите кто уже сталкивался или реализовавал такое.