![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Честно сказать не знаю как толковее назвать тему ))
Вопрос скорее по БД. Есть некоторые типы продукции, у каждого типа свой набор параметров. Например, есть некоторые продукты (в широком смысле )) ). При создании таких продуктов в БД им задаются, как правило, разные параметры (характеристики), а их набор может быть у каждого типа продукта свой и может изменяться. Нужно сделать универсальную в этом плане систему, чтобы небыло необходимости создавать под каждый тип продукта таблицу со своими параметрами да и с изменением свойств таких параметров я думаю тоже все ясно (лезем в БД), а так же чтобы не нужно было вручную писать запросы под каждый поиск(крайне желательно) )). Параметры выносим естесственно в другую таблицу, которая связывается с типом продукта. Чойто я напридумал (простите за мой метаязык в описании таблиц): table_product_type {id, name} table_product {id, typeId, name} table_variable { id, productTypeId, // ид типа продукта typeId // тип переменной (целое, с плав. точкой, выбор из списка, строка) } table_variables_values { // таблица со списками возможных значений для переменной типа "выбор из списка" id, variableId, // для какой переменной это значение value, // значение присваиваемое переменной name // семантика } table_product_variable_filters { id, variableId, filterType, // тип фильтра (>,<,>=,<=,!=) valueInt, // точное значение (int) это же поле можно пользовать если переменная выбор из списка, тогда тут id выбранного параметра valueFloat, // точное значение (float) intMin, intMax, floatMin, floatMax } Это то что мне приблизительно видится, однако не могу теперь придумать как это все использовать при фильтрации, то есть чето мне запрос не придумать к такой структуре таблиц ((( Поможите люди добрые советом, верной ли дорогой иду и быстро ли такое будет работать? Тема наверняка довольно широкая, поиск чувствую мне не дает результатов потому, что не знаю как это все назвать и что искать. |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
Называется это EAV (entity attribute value) - на форуме есть достаточно тем освещающих подводные камни такой схемы ![]() В интернете приходилось сталкиваться с "готовыми" схемами БД. Факультативно пытался создавать описаные запросы - силами SQL не осилил (хотя и не особо старался). Думаю удачным решением будет реализация запроса в нескько этапов, с тем, что бы окончательный запрос генерировать динамически на стороне клиента средствами императивного ЯП (при этом используя результаты первого(ых) запросов в качестве мета-даных). -------------------- Слава Україні! |
|||
|
||||
B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
Да это оно, подходы описываемые очень похоже, но у меня задачка немного сложнее, у меня продукты - это вкладные/кредитные программы, на сайте нужен по ним поиск, а там не просто параметры там я бы сказал условия (например, возможная сумма кредита или возраст заемщика - это диапазон, а объект кредитования это, к примеру, не просто автомобиль а либо иностранный и новый либо отечественный и новый (их конечно можно на составляющие разложить но всеже...))
наверное чтоит сначала реализовать более простое EAV-решение, потом усложнять... пошел читать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |