|
|
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Добрый день. Столкнулся с одной проблемой - не придумал оптимального варианта для решения. Итак, есть некий товар (термометр), у которого есть параметр "Диапазон температур". Это параметр по своему типу является диапазоном, т.е. имеет мин. и макс. значения. Встает вопрос: как хранить диапазон в таблице при условии, что по нему будет вестись поиск. Один из выходов - создать доп. поле в котором хранить тип параметра - число, диапазон (мин), диапазон (макс), строка... С другой стороны я знаю, что у категории "Термометры" параметр "Диапазон температур" всегда является диапазоном (не может он быть обычным числом ни при каких обстоятельствах). Получается, что если у каждого товара из этой категории писать в соседнем поле ValueType значение range, то это получится несколько избыточно (ведь всегда диапазон). Можно было бы просто создать еще одну таблицу, куда вписать, что в такой-то категории такой-то параметр является диапазоном. Но тогда не понятно, как тогда искать данный товар, ведь в этом случае я не знаю какое из двух значений является мин., а какое максимумом диапазона. Может быть это уже где-то решено... Помогите, плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 21:51 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Любое значение - диапазон. Даже если его конца совпадают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:05 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Сильно зависит от предметной области. Если речь о торговле бытовыми термометрами, то вполне вероятно, что окажется достаточно буквально нескольких фиксированных строковых значений. Например, "30 - 40 градусов" (медицинские), "-20 - 50 градусов" (комнатные), "20-300 градусов" (кулинарные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:08 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
MySQL рассматривает все числа как диапазон? Дело в том, если у меня число, то в запросе будет одно условие WHERE, если диапазон, то другое условие WHERE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:12 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
А, ну это пример только. У моих товаров значений диапазонов гораздо больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:14 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsДело в том, если у меня число, то в запросе будет одно условие WHERE, если диапазон, то другое условие WHERE.Ну так и стройте запрос в зависимости от выбранных параметров. В чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:16 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Категорий множество, а робот-построитель запросов - всего один на все категории. Вот ему и нужно узнавать, как строить запрос исходя значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:27 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlns, И? Где постановка задачи? Какие именно виды поиска будут нужны? Какие еще действия с этими данными нужно проводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 22:32 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Ааа, поиск стандартный - по заданному диапазону выбрать все, что в нем находится. (на сайте есть форма со слайдерами - один ползунок слайдера отвечает за мин. значение, а второй - за макс.) Также есть список сравнения - сравниваются только товары одной категории (хороший пример - яндекс маркет - так и поиск с применением слайдера и список сравнения). Хм, пришла идея - вообще разделить таблицу с характеристиками товаров на несколько - в одной только числовые параметры, во второй - диапазоны, в третьей - строки, в четвертой - вообще какая другая сущность. Имеет право на жизнь или ерунда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 23:28 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
я так понимаю, речь вообще не о термометрах нужно вести есть таблица товар характеристики товара могут быть разными по типу и количеству (целое число/вещественное/диапазон/набор значений) отсюда - характеристики товара - отдельная таблица, связанная с товаром : код товара, наименование хар-ки, ее тип если не очень много параметров - можно ее денормализовать, т.е. вписать туда все возможные поля, и использовать только те, что подходят иначе нужна третья таблица - значения характеристик товара поиск в любом случае получится довольно сложным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:11 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsпоиск стандартный - по заданному диапазону выбрать все, что в нем находится. (на сайте есть форма со слайдерами - один ползунок слайдера отвечает за мин. значение, а второй - за макс.)Для этого вообще диапазоны в свойствах товара не нужны, только в интерфейсе поиска. Например, задает пользователь диапазон высоты товара от 20 до 30 см. Тогда в результат должны попасть 21, 25 и 27 см. У меня есть схожая система. Значения все строковые и вынесены в справочник. Для всех значений задан порядок сортировки в отдельном числовом поле. У характеристик есть флаг "использовать поиск по диапазону". Если он установлен, то в интерфейсе для данной характеристики рисуется два выбора (списка или выпадающего списка), а поиск происходит как раз по диапазону в поле сортировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:14 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlns, Невижу никаких сложностей. Таблица товаров, таблица параметров, таблица значений параметров. Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 00:19 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
miksoftxmlnsпоиск стандартный - по заданному диапазону выбрать все, что в нем находится. (на сайте есть форма со слайдерами - один ползунок слайдера отвечает за мин. значение, а второй - за макс.)Для этого вообще диапазоны в свойствах товара не нужны, только в интерфейсе поиска. Например, задает пользователь диапазон высоты товара от 20 до 30 см. Тогда в результат должны попасть 21, 25 и 27 см. У меня есть схожая система. Значения все строковые и вынесены в справочник. Для всех значений задан порядок сортировки в отдельном числовом поле. У характеристик есть флаг "использовать поиск по диапазону". Если он установлен, то в интерфейсе для данной характеристики рисуется два выбора (списка или выпадающего списка), а поиск происходит как раз по диапазону в поле сортировки. Да, но значение параметра "Высота" - обычное числовое. Тут все просто) Теперь пользователь хочет найти товар по параметру "Рабочее напряжение" - ищет от 5В до 9В. Этот параметр является диапазоном, потому в выборку должны попасть: 5-9, 4-7,8-12,6-7,3-12 (логика поиска по диапазону кажется такая). В выборку не попадают: все что <5 и все что >9. А чтобы это найти нужно, чтобы для мин. значения было свое условие WHERE, для максимального - свое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:19 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Злой Бобр, Вы имеете в виду так?: Таблица параметров: ParameterID | ParameterName Таблица товаров: CategoryID | ID | Price | Weight | Name | ... Таблица значений: ID | ParameterID | Value | ValueType ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:30 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsТеперь пользователь хочет найти товар по параметру "Рабочее напряжение" - ищет от 5В до 9В. Этот параметр является диапазоном, потому в выборку должны попасть: 5-9, 4-7,8-12,6-7,3-12 (логика поиска по диапазону кажется такая). В выборку не попадают: все что <5 и все что >9. А чтобы это найти нужно, чтобы для мин. значения было свое условие WHERE, для максимального - свое.Заведите две отдельные характеристики - "минимальное рабочее напряжение" и "максимальное рабочее напряжение". По каждой ищите по диапазону, но каждая будет отдельной величиной. Заодно появится возможность искать по открытому диапазону, например, "от 5В" или "не более 9В". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:41 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Ну т.е. возле каждого значения добавить поле ValueType, куда вписать: rangeMin или rangeMax или decimal или string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:48 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlns, Зачем около значения-то? В таблице параметров добавте колонку "единица измерения". Если есть параметры: "минимальное измеряемое значение" и "максимальное измеряемое значение" или "минимальное рабочее напряжение" и "максимальное рабочее напряжение", и так понятно, что речь идет о диапазонах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 09:56 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
baracs, Ааа, я кажется забыл еще про один случай рассказать: есть товары (из одной и той же категории), у которых один и тот же параметр может быть либо обычным числом, либо диапазоном. Например "Электронные схемы": ЭС1 - Рабочее напряжение: 4-6V ЭС2 - Рабочее напряжение: 8V ЭС3 - Рабочее напряжение: 1-10V ЭС4 - Рабочее напряжение: 9.6V Если я задам рабочее напряжение как диапазон, то непонятно как искать числовые значения. Если я задам - как число, то непонятно как искать диапазоны. Т.е. тут либо придется продублировать числовые параметры дважды (и тем самым превратить их в диапазон вида 9.6-9.6), либо создать доп. поле, куда вписать, что же это за тип параметра у конкретного товара. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 10:08 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsbaracs, Ааа, я кажется забыл еще про один случай рассказать: есть товары (из одной и той же категории), у которых один и тот же параметр может быть либо обычным числом, либо диапазоном. Например "Электронные схемы": ЭС1 - Рабочее напряжение: 4-6V ЭС2 - Рабочее напряжение: 8V ЭС3 - Рабочее напряжение: 1-10V ЭС4 - Рабочее напряжение: 9.6V Если я задам рабочее напряжение как диапазон, то непонятно как искать числовые значения. Если я задам - как число, то непонятно как искать диапазоны. Т.е. тут либо придется продублировать числовые параметры дважды (и тем самым превратить их в диапазон вида 9.6-9.6), либо создать доп. поле, куда вписать, что же это за тип параметра у конкретного товара.А это как раз тот случай, когдаDimitry SibiryakovЛюбое значение - диапазон. Даже если его конца совпадают.Т.е. дублируйте значение в двух характеристиках. Выглядеть, правда, будет несколько коряво: ЭС2 - Минимальное рабочее напряжение: 8V ЭС2 - Максимальное рабочее напряжение: 8V Но насколько это критично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 10:12 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsТ.е. тут либо придется продублировать числовые параметры дважды (и тем самым превратить их в диапазон вида 9.6-9.6), либо создать доп. поле, куда вписать, что же это за тип параметра у конкретного товара. Ну и чем вас не устраивает первый вариант? Анализировать в запросах доп. поле - геморройное занятие, часто приводящее к кривым планам выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 10:20 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
А если в категории 98 товаров имеют числовое значение, а 2 товара - диапазоны. Преобразовать диапазон в число - значит наврать покупателю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 10:36 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsА если в категории 98 товаров имеют числовое значение, а 2 товара - диапазоны. Преобразовать диапазон в число - значит наврать покупателю.Возможно, есть смысл разделить категорию на две. Или еще как-то изменить категоризацию. И даже если категоризацию изменить нельзя, то не вижу ничего страшного в том, что у 98 товаров будет две характеристики с одинаковыми значениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 10:44 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
miksoftxmlnsА если в категории 98 товаров имеют числовое значение, а 2 товара - диапазоны. Преобразовать диапазон в число - значит наврать покупателю.Возможно, есть смысл разделить категорию на две. Или еще как-то изменить категоризацию. И даже если категоризацию изменить нельзя, то не вижу ничего страшного в том, что у 98 товаров будет две характеристики с одинаковыми значениями. xmlns имеет ввиду, что из-за каких-то уникальных товаров менять схему БД - не наменяешься. Сегодня диапазоны, завтра три значения, послезавтра четыре... И ради этого держать два-три-четыре совпадающих значения в остальных полях = путь к говнокоду, который может поддерживать только создавший. И то эффективно в первый месяц после создания - пока не забыл, что имел ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 11:43 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Hawkmoonxmlns имеет ввиду, что из-за каких-то уникальных товаров менять схему БД - не наменяешься.Не понял, в чем именно возражение? Менять схему БД я нигде не предлагаю. Только сделать сразу и правильную. Hawkmoonзавтра три значения, послезавтра четыре...Три и четыре значения - это уже не диапазоны, а множественные значения, которые вполне укладываются в предлагаемую мной схему. Hawkmoonкоторый может поддерживать только создавшийДокументирование никто не отменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 11:57 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Hawkmoon, Вы меня поняли правильно!=) Вот попался уникальный товар - что делать? Не добавлять в перечень - плохо, менять структуру БД - плохо. Значит надо придумать универсальную структуру. А как же делают в CMS? Там вообще добавить можно все что угодно... Правда ни в одном магазине я не встречал подробный поиск и кучей феничек. Разве что Яндекс.Маркет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:01 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsHawkmoon, Вы меня поняли правильно!=) Вот попался уникальный товар - что делать? Не добавлять в перечень - плохо, менять структуру БД - плохо. Значит надо придумать универсальную структуру. А как же делают в CMS? Там вообще добавить можно все что угодно... Правда ни в одном магазине я не встречал подробный поиск и кучей феничек. Разве что Яндекс.Маркет. "Все украдено до нас". Читать по поводу EAV. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:26 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlns, У меня та же задача, но с другого боку-припеку. Поэтому с интересом слежу за развитием дискуссии. Моя система собирает некие данные от многих узлов. Оптом и постоянно. При этом по каждому узлу можно рассчитать некие статистические показатели. Также есть шаблоны "ненормального поведения", которые должны рассчитываться на основе статистических показателей. При нарушении шаблона, то есть выходе статистического показателя, расчитанного за последние сутки, за установленные пределы, должен быть выдан "ахтунг" нужным людям (но это отдельная история...) Так вот. 1. Одни шаблоны говорят, что узел функционирует ненормально, если превышен 1 статистический показатель 2. Другие - что узел функционирует ненормально, если статистический показатель меньше одного или больше другого 3. Третьи - что есть "сбойная область", и, наоборот, показатель не должен быть в этой области. 4. Четвертые - что есть область (a; b) для показателя c, и при этом d>d_critical И вот как это все хранить в одной/многих таблицах БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:36 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
miksoftДокументирование никто не отменял. Истеричных менеджеров "КАКОЕ ДОКУМЕНТИРОВАНИЕ?!" (а через полгода "КАК ДВЕ НЕДЕЛИ?????!!!") никто не отменял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:38 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
miksoftМенять схему БД я нигде не предлагаю. Только сделать сразу и правильную. Правильная сегодня - не есть правильная завтра, по пришествию еще одной супер-пупер-с-бантиком-хрени. Которую тоже нужно продавать (нам) и искать (им - клиентам) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:51 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
HawkmoonТак вот. 1. Одни шаблоны говорят, что узел функционирует ненормально, если превышен 1 статистический показатель 2. Другие - что узел функционирует ненормально, если статистический показатель меньше одного или больше другого 3. Третьи - что есть "сбойная область", и, наоборот, показатель не должен быть в этой области. 4. Четвертые - что есть область (a; b) для показателя c, и при этом d>d_critical И вот как это все хранить в одной/многих таблицах БД?Наши программисты для похожей задачи хранят в базе фрагменты SQL-выражений, которые должны выдать булевский результат для разрешения/запрета операции. И для каждого фрагмента хранится поясняющая строка вида "документ должен быть не позднее 30 дней от текущего числа". Если все проверки выполняются, то операция разрешается. Если нет, то выдаются сообщения от тех проверок, которые не прошли. Минус - редактировать эти правила могут только программисты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:53 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
HawkmoonmiksoftМенять схему БД я нигде не предлагаю. Только сделать сразу и правильную. Правильная сегодня - не есть правильная завтра, по пришествию еще одной супер-пупер-с-бантиком-хрени. Которую тоже нужно продавать (нам) и искать (им - клиентам)Мне тут несколько проще. У нас разнообразие уже настолько велико, что шансов на появление чего-то оригинального почти нет. Если появится - конечно, будем менять. Но за несколько лет случаев еще не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 12:55 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
xmlnsЗлой Бобр, Вы имеете в виду так?: Таблица параметров: ParameterID | ParameterName Таблица товаров: CategoryID | ID | Price | Weight | Name | ... Таблица значений: ID | ParameterID | Value | ValueType Нет. Примерно так: Tovary (id, name,...) Parameter (id, name) Tovary_Parameter (id, Tovary.id, Parameter.id, value) Из вашего первого поста будет примерно так: Tovary (1, 'термометр',...) Parameter (1, 'Диапазон температур мин.'), (2, 'Диапазон температур макс.') Tovary_Parameter (1, 1, 1, 5), (1, 1, 1, 20) Запрос я думаю составить сможете и сами. Есть еще вариант добавить в таблицу товара 2 поля с мин и мак значением температуры. Плюс в скорости поиска. Минус в увеличении объема базы. Есть вариант заводить таблицу характеристик для каждой отдельной категории (группы) товара. Этот вариант самый правильный, т.к. у каждого товара свои характеристики. И скажем мешать в кучу макароны и туалетную бумагу несовсем правильно, хотя оба товара имеют в качестве характеристики длину изделия. Одним словом все зависит от того как построена ваша БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 14:44 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Опечатался: Tovary_Parameter (1, 1, 1, 5), (1, 1, 2, 20) // диапазон температуры от 5 до 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 14:46 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Опечатался: Tovary_Parameter (1, 1, 1, 5), (2, 1, 2, 20) // диапазон температуры от 5 до 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 14:47 |
|
||
|
Типы значений характеристик товаров
|
|||
|---|---|---|---|
|
#18+
Хм, в принципе можно диапазонный параметр разделить на два параметра - мин и макс. Тогда для смешанных (диапазон и число) получится три параметра: мин, макс, и сам числовой. Также сделать таблицу, где указать, в какой категории какой параметр имеет такой-то тип. А дальше вести поиск. Сначала сделать запрос из этой таблицы - определить типы параметров, по которым пользователь ищет. Далее исходя из данных выборки средствами языка создать запрос. Для смешанных параметров использовать OR: искать или как число, или как границы диапазона. Ну или использовать MongoDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 20:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1540889]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 187ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...