powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Типы значений характеристик товаров
35 сообщений из 35, показаны все 2 страниц
Типы значений характеристик товаров
    #38639221
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Столкнулся с одной проблемой - не придумал оптимального варианта для решения. Итак, есть некий товар (термометр), у которого есть параметр "Диапазон температур". Это параметр по своему типу является диапазоном, т.е. имеет мин. и макс. значения. Встает вопрос: как хранить диапазон в таблице при условии, что по нему будет вестись поиск. Один из выходов - создать доп. поле в котором хранить тип параметра - число, диапазон (мин), диапазон (макс), строка...
С другой стороны я знаю, что у категории "Термометры" параметр "Диапазон температур" всегда является диапазоном (не может он быть обычным числом ни при каких обстоятельствах). Получается, что если у каждого товара из этой категории писать в соседнем поле ValueType значение range, то это получится несколько избыточно (ведь всегда диапазон). Можно было бы просто создать еще одну таблицу, куда вписать, что в такой-то категории такой-то параметр является диапазоном.
Но тогда не понятно, как тогда искать данный товар, ведь в этом случае я не знаю какое из двух значений является мин., а какое максимумом диапазона.

Может быть это уже где-то решено... Помогите, плз.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639225
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любое значение - диапазон. Даже если его конца совпадают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639228
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сильно зависит от предметной области.
Если речь о торговле бытовыми термометрами, то вполне вероятно, что окажется достаточно буквально нескольких фиксированных строковых значений. Например, "30 - 40 градусов" (медицинские), "-20 - 50 градусов" (комнатные), "20-300 градусов" (кулинарные).
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639231
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MySQL рассматривает все числа как диапазон?

Дело в том, если у меня число, то в запросе будет одно условие WHERE, если диапазон, то другое условие WHERE.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639234
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, ну это пример только. У моих товаров значений диапазонов гораздо больше.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639237
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsДело в том, если у меня число, то в запросе будет одно условие WHERE, если диапазон, то другое условие WHERE.Ну так и стройте запрос в зависимости от выбранных параметров. В чем проблема?
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639245
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Категорий множество, а робот-построитель запросов - всего один на все категории. Вот ему и нужно узнавать, как строить запрос исходя значений.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639248
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlns,

И? Где постановка задачи? Какие именно виды поиска будут нужны? Какие еще действия с этими данными нужно проводить?
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639276
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ааа,
поиск стандартный - по заданному диапазону выбрать все, что в нем находится. (на сайте есть форма со слайдерами - один ползунок слайдера отвечает за мин. значение, а второй - за макс.)
Также есть список сравнения - сравниваются только товары одной категории (хороший пример - яндекс маркет - так и поиск с применением слайдера и список сравнения).

Хм, пришла идея - вообще разделить таблицу с характеристиками товаров на несколько - в одной только числовые параметры, во второй - диапазоны, в третьей - строки, в четвертой - вообще какая другая сущность. Имеет право на жизнь или ерунда?
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639298
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю, речь вообще не о термометрах нужно вести
есть таблица товар
характеристики товара могут быть разными по типу и количеству
(целое число/вещественное/диапазон/набор значений)

отсюда - характеристики товара - отдельная таблица, связанная с товаром : код товара, наименование хар-ки, ее тип

если не очень много параметров - можно ее денормализовать, т.е. вписать туда все возможные поля, и использовать только те, что подходят
иначе нужна третья таблица - значения характеристик товара

поиск в любом случае получится довольно сложным
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639300
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsпоиск стандартный - по заданному диапазону выбрать все, что в нем находится. (на сайте есть форма со слайдерами - один ползунок слайдера отвечает за мин. значение, а второй - за макс.)Для этого вообще диапазоны в свойствах товара не нужны, только в интерфейсе поиска.
Например, задает пользователь диапазон высоты товара от 20 до 30 см. Тогда в результат должны попасть 21, 25 и 27 см.

У меня есть схожая система. Значения все строковые и вынесены в справочник. Для всех значений задан порядок сортировки в отдельном числовом поле. У характеристик есть флаг "использовать поиск по диапазону". Если он установлен, то в интерфейсе для данной характеристики рисуется два выбора (списка или выпадающего списка), а поиск происходит как раз по диапазону в поле сортировки.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639304
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlns,

Невижу никаких сложностей. Таблица товаров, таблица параметров, таблица значений параметров. Все.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639403
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftxmlnsпоиск стандартный - по заданному диапазону выбрать все, что в нем находится. (на сайте есть форма со слайдерами - один ползунок слайдера отвечает за мин. значение, а второй - за макс.)Для этого вообще диапазоны в свойствах товара не нужны, только в интерфейсе поиска.
Например, задает пользователь диапазон высоты товара от 20 до 30 см. Тогда в результат должны попасть 21, 25 и 27 см.

У меня есть схожая система. Значения все строковые и вынесены в справочник. Для всех значений задан порядок сортировки в отдельном числовом поле. У характеристик есть флаг "использовать поиск по диапазону". Если он установлен, то в интерфейсе для данной характеристики рисуется два выбора (списка или выпадающего списка), а поиск происходит как раз по диапазону в поле сортировки.

Да, но значение параметра "Высота" - обычное числовое. Тут все просто)
Теперь пользователь хочет найти товар по параметру "Рабочее напряжение" - ищет от 5В до 9В. Этот параметр является диапазоном, потому в выборку должны попасть: 5-9, 4-7,8-12,6-7,3-12 (логика поиска по диапазону кажется такая). В выборку не попадают: все что <5 и все что >9. А чтобы это найти нужно, чтобы для мин. значения было свое условие WHERE, для максимального - свое.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639410
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,
Вы имеете в виду так?:
Таблица параметров:
ParameterID | ParameterName

Таблица товаров:
CategoryID | ID | Price | Weight | Name | ...

Таблица значений:
ID | ParameterID | Value | ValueType
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639428
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsТеперь пользователь хочет найти товар по параметру "Рабочее напряжение" - ищет от 5В до 9В. Этот параметр является диапазоном, потому в выборку должны попасть: 5-9, 4-7,8-12,6-7,3-12 (логика поиска по диапазону кажется такая). В выборку не попадают: все что <5 и все что >9. А чтобы это найти нужно, чтобы для мин. значения было свое условие WHERE, для максимального - свое.Заведите две отдельные характеристики - "минимальное рабочее напряжение" и "максимальное рабочее напряжение". По каждой ищите по диапазону, но каждая будет отдельной величиной. Заодно появится возможность искать по открытому диапазону, например, "от 5В" или "не более 9В".
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639431
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну т.е. возле каждого значения добавить поле ValueType, куда вписать: rangeMin или rangeMax или decimal или string.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639441
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlns,

Зачем около значения-то? В таблице параметров добавте колонку "единица измерения".

Если есть параметры: "минимальное измеряемое значение" и "максимальное измеряемое значение" или "минимальное рабочее напряжение" и "максимальное рабочее напряжение", и так понятно, что речь идет о диапазонах.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639456
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
baracs,

Ааа, я кажется забыл еще про один случай рассказать: есть товары (из одной и той же категории), у которых один и тот же параметр может быть либо обычным числом, либо диапазоном. Например "Электронные схемы":
ЭС1 - Рабочее напряжение: 4-6V
ЭС2 - Рабочее напряжение: 8V
ЭС3 - Рабочее напряжение: 1-10V
ЭС4 - Рабочее напряжение: 9.6V

Если я задам рабочее напряжение как диапазон, то непонятно как искать числовые значения. Если я задам - как число, то непонятно как искать диапазоны.
Т.е. тут либо придется продублировать числовые параметры дважды (и тем самым превратить их в диапазон вида 9.6-9.6), либо создать доп. поле, куда вписать, что же это за тип параметра у конкретного товара.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639461
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsbaracs,

Ааа, я кажется забыл еще про один случай рассказать: есть товары (из одной и той же категории), у которых один и тот же параметр может быть либо обычным числом, либо диапазоном. Например "Электронные схемы":
ЭС1 - Рабочее напряжение: 4-6V
ЭС2 - Рабочее напряжение: 8V
ЭС3 - Рабочее напряжение: 1-10V
ЭС4 - Рабочее напряжение: 9.6V

Если я задам рабочее напряжение как диапазон, то непонятно как искать числовые значения. Если я задам - как число, то непонятно как искать диапазоны.
Т.е. тут либо придется продублировать числовые параметры дважды (и тем самым превратить их в диапазон вида 9.6-9.6), либо создать доп. поле, куда вписать, что же это за тип параметра у конкретного товара.А это как раз тот случай, когдаDimitry SibiryakovЛюбое значение - диапазон. Даже если его конца совпадают.Т.е. дублируйте значение в двух характеристиках.

Выглядеть, правда, будет несколько коряво:
ЭС2 - Минимальное рабочее напряжение: 8V
ЭС2 - Максимальное рабочее напряжение: 8V
Но насколько это критично?
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639469
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsТ.е. тут либо придется продублировать числовые параметры дважды (и тем самым превратить их в диапазон вида 9.6-9.6), либо создать доп. поле, куда вписать, что же это за тип параметра у конкретного товара. Ну и чем вас не устраивает первый вариант?

Анализировать в запросах доп. поле - геморройное занятие, часто приводящее к кривым планам выполнения.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639487
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если в категории 98 товаров имеют числовое значение, а 2 товара - диапазоны. Преобразовать диапазон в число - значит наврать покупателю.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639492
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsА если в категории 98 товаров имеют числовое значение, а 2 товара - диапазоны. Преобразовать диапазон в число - значит наврать покупателю.Возможно, есть смысл разделить категорию на две. Или еще как-то изменить категоризацию.
И даже если категоризацию изменить нельзя, то не вижу ничего страшного в том, что у 98 товаров будет две характеристики с одинаковыми значениями.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639558
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftxmlnsА если в категории 98 товаров имеют числовое значение, а 2 товара - диапазоны. Преобразовать диапазон в число - значит наврать покупателю.Возможно, есть смысл разделить категорию на две. Или еще как-то изменить категоризацию.
И даже если категоризацию изменить нельзя, то не вижу ничего страшного в том, что у 98 товаров будет две характеристики с одинаковыми значениями.

xmlns имеет ввиду, что из-за каких-то уникальных товаров менять схему БД - не наменяешься. Сегодня диапазоны, завтра три значения, послезавтра четыре...

И ради этого держать два-три-четыре совпадающих значения в остальных полях = путь к говнокоду, который может поддерживать только создавший. И то эффективно в первый месяц после создания - пока не забыл, что имел ввиду.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639578
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hawkmoonxmlns имеет ввиду, что из-за каких-то уникальных товаров менять схему БД - не наменяешься.Не понял, в чем именно возражение? Менять схему БД я нигде не предлагаю. Только сделать сразу и правильную.
Hawkmoonзавтра три значения, послезавтра четыре...Три и четыре значения - это уже не диапазоны, а множественные значения, которые вполне укладываются в предлагаемую мной схему.
Hawkmoonкоторый может поддерживать только создавшийДокументирование никто не отменял.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639583
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hawkmoon,

Вы меня поняли правильно!=)

Вот попался уникальный товар - что делать? Не добавлять в перечень - плохо, менять структуру БД - плохо.
Значит надо придумать универсальную структуру.

А как же делают в CMS? Там вообще добавить можно все что угодно... Правда ни в одном магазине я не встречал подробный поиск и кучей феничек. Разве что Яндекс.Маркет.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639629
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlnsHawkmoon,

Вы меня поняли правильно!=)

Вот попался уникальный товар - что делать? Не добавлять в перечень - плохо, менять структуру БД - плохо.
Значит надо придумать универсальную структуру.

А как же делают в CMS? Там вообще добавить можно все что угодно... Правда ни в одном магазине я не встречал подробный поиск и кучей феничек. Разве что Яндекс.Маркет.

"Все украдено до нас".
Читать по поводу EAV. ;-)
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639642
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xmlns,

У меня та же задача, но с другого боку-припеку. Поэтому с интересом слежу за развитием дискуссии.

Моя система собирает некие данные от многих узлов. Оптом и постоянно.
При этом по каждому узлу можно рассчитать некие статистические показатели.

Также есть шаблоны "ненормального поведения", которые должны рассчитываться на основе статистических показателей.
При нарушении шаблона, то есть выходе статистического показателя, расчитанного за последние сутки, за установленные пределы, должен быть выдан "ахтунг" нужным людям (но это отдельная история...)

Так вот.
1. Одни шаблоны говорят, что узел функционирует ненормально, если превышен 1 статистический показатель
2. Другие - что узел функционирует ненормально, если статистический показатель меньше одного или больше другого
3. Третьи - что есть "сбойная область", и, наоборот, показатель не должен быть в этой области.
4. Четвертые - что есть область (a; b) для показателя c, и при этом d>d_critical

И вот как это все хранить в одной/многих таблицах БД?
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639645
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftДокументирование никто не отменял.

Истеричных менеджеров "КАКОЕ ДОКУМЕНТИРОВАНИЕ?!" (а через полгода "КАК ДВЕ НЕДЕЛИ?????!!!") никто не отменял
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639664
Hawkmoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftМенять схему БД я нигде не предлагаю. Только сделать сразу и правильную.

Правильная сегодня - не есть правильная завтра, по пришествию еще одной супер-пупер-с-бантиком-хрени.
Которую тоже нужно продавать (нам) и искать (им - клиентам)
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639667
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HawkmoonТак вот.
1. Одни шаблоны говорят, что узел функционирует ненормально, если превышен 1 статистический показатель
2. Другие - что узел функционирует ненормально, если статистический показатель меньше одного или больше другого
3. Третьи - что есть "сбойная область", и, наоборот, показатель не должен быть в этой области.
4. Четвертые - что есть область (a; b) для показателя c, и при этом d>d_critical

И вот как это все хранить в одной/многих таблицах БД?Наши программисты для похожей задачи хранят в базе фрагменты SQL-выражений, которые должны выдать булевский результат для разрешения/запрета операции. И для каждого фрагмента хранится поясняющая строка вида "документ должен быть не позднее 30 дней от текущего числа". Если все проверки выполняются, то операция разрешается. Если нет, то выдаются сообщения от тех проверок, которые не прошли.

Минус - редактировать эти правила могут только программисты.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639672
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HawkmoonmiksoftМенять схему БД я нигде не предлагаю. Только сделать сразу и правильную.

Правильная сегодня - не есть правильная завтра, по пришествию еще одной супер-пупер-с-бантиком-хрени.
Которую тоже нужно продавать (нам) и искать (им - клиентам)Мне тут несколько проще. У нас разнообразие уже настолько велико, что шансов на появление чего-то оригинального почти нет.
Если появится - конечно, будем менять. Но за несколько лет случаев еще не было.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639833
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 поля с мин и мак значением температуры. Плюс в скорости поиска. Минус в увеличении объема базы.
Есть вариант заводить таблицу характеристик для каждой отдельной категории (группы) товара. Этот вариант самый правильный, т.к. у каждого товара свои характеристики. И скажем мешать в кучу макароны и туалетную бумагу несовсем правильно, хотя оба товара имеют в качестве характеристики длину изделия.

Одним словом все зависит от того как построена ваша БД.
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639839
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатался:
Tovary_Parameter (1, 1, 1, 5), (1, 1, 2, 20) // диапазон температуры от 5 до 20
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38639842
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатался:
Tovary_Parameter (1, 1, 1, 5), (2, 1, 2, 20) // диапазон температуры от 5 до 20
...
Рейтинг: 0 / 0
Типы значений характеристик товаров
    #38640255
xmlns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, в принципе можно диапазонный параметр разделить на два параметра - мин и макс. Тогда для смешанных (диапазон и число) получится три параметра: мин, макс, и сам числовой.

Также сделать таблицу, где указать, в какой категории какой параметр имеет такой-то тип.

А дальше вести поиск. Сначала сделать запрос из этой таблицы - определить типы параметров, по которым пользователь ищет. Далее исходя из данных выборки средствами языка создать запрос. Для смешанных параметров использовать OR: искать или как число, или как границы диапазона.


Ну или использовать MongoDB.
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Типы значений характеристик товаров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]