powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение характеристик товаров. Как лучше спроектировать.
13 сообщений из 13, страница 1 из 1
Хранение характеристик товаров. Как лучше спроектировать.
    #39084789
LexNext
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!
СУБД: реляционная - MsSql
Есть различные категории товаров.
Каждая категория товара имеет свой набор хар-тик для товаров.
Харк-тики могут различного типа: число, текст, значение списка, множественное значение списка

Поэтому напрашивается вот такая вот таблица хранения значени при первом рассмотрении:
___________________
ProductPropertyValue:

ID
ProductId (ид товара)
PropertyId (ид свойства)
ValueDecimal (хранение значения типа Decimal)
ValueText (хранение значения типа Text)
ValueListId (хранение ид списка предустановленных значений при связи много к одному, т.е. один товар может иметь одно значение хар-тики - Цвет: красный)
__________________________

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

Вариант, который у меня напрашивается следующий: не делать уникальным значение ключа ProductId PropertyId и дать возможность добавлять несколько значений с одинаковыми значениями этой связки.

Вопросы.
1) Какие есть альтернативы моему варианту?
2) Где слабое место описанной реализации?
Спасибо!
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084799
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexNext,

Сделать универсальный справочник (ТипСправочника,Ид->Значение) и ещё один вид значения в ProductPropertyValue -- ссылку на универсальный справочник.
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084811
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexNextТаблица относительно нормальная, но есть НО - что делать, если в товаре появляется хар-тика - "Доступные режимы" и в ней должны идти перечисления предустановленных значений в товаре, т.е. связь много ко многим?


Сделать ещё возможност делать значения в виде множественного списка. Да, многие-ко-многим будет, ещё одна таблица.
Ничего страшного.

LexNextВариант, который у меня напрашивается следующий: не делать уникальным значение ключа ProductId PropertyId и дать возможность добавлять несколько значений с одинаковыми значениями этой связки.
Вопросы.
2) Где слабое место описанной реализации?


Нет, так не пойдёт.
Таблица без ключа -- это очень плохо.
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084815
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать поле Text и хранить там HTML/XML/JSON/RTF/что в голову взбредёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084929
LexNext
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос в дальнейшим фильтрации значений и скорости их выборки.
Я наблюдал в одном высокногруженном магазине схему БД.
Примечательно там была таблица хар-тик, а точнее ее отсутствие.
Значения хар-тик хранились в той же таблице что и товары, и каждое значение было еще отдельным полем в таблице.
Разработчики хвалились, что скорость поиска в разы выше чем битрикса и прочих продуктов.

У них полей хар-тик там было чуть более 500 суммарно (представляете себе масштаб таблицы).
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084953
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexNextЗначения хар-тик хранились в той же таблице что и товары, и каждое значение было еще отдельным полем в таблице.
Разработчики хвалились, что скорость поиска в разы выше чем битрикса и прочих продуктов.


В случае сложных поисков типа "ХарактеристикаА равна А и ХарактеристикаB равна B1 или B2 и ХарактеристикаС не равна C" - в это легко можно поверить
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084966
LexNext
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все равно этот подход не совсем корректен и вот почему.
При использовании ORM фреймоворков, при дефолтных запросах (не прописывать жестко набор выбираемых полей) выборки, возвращаемая коллекция товаров представляет собой коллекцию огромнейших объектов, которые могут весьма подтормаживать прилоежние.
Выход тут один: делать таблицу хар-тик 1 к 1 к товару.
Т.е. название и описание, цены мы храним в одном месте, а вот если нужны хар-тики, то при необходимости подключаем связанную таблицу.
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084974
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинВ случае сложных поисков типа "ХарактеристикаА равна А и
ХарактеристикаB равна B1 или B2 и ХарактеристикаС не равна C" - в это легко можно поверить

А вот для нечёткого поиска типа "вывести товары в порядке убывания релевантности
(количества совпадающих характеристик)" эта их схема уже не так привлекательна.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39084982
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexNextВсе равно этот подход не совсем корректен и вот почему.
При использовании ORM фреймоворков, при дефолтных запросах (не прописывать жестко набор выбираемых полей) выборки, возвращаемая коллекция товаров представляет собой коллекцию огромнейших объектов, которые могут весьма подтормаживать прилоежние.

Т.е. "если взять ОРМ и неправильно его пользовать, то можно выстрелить себе в ногу". Вам эта причина кажется убедительной? :)

LexNext Выход тут один: делать таблицу хар-тик 1 к 1 к товару.

Выход разумеется не один (в частности, можно делать много таблиц характеристик, для каждой категории с отдельным набором характеристик - свою)
Я говорил лишь про скорость поиска в сравнении с вертикальным EAV-ом.
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39085006
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexNext Выход тут один: делать таблицу хар-тик 1 к 1 к товару.
Т.е. название и описание, цены мы храним в одном месте, а вот если нужны хар-тики, то при необходимости подключаем связанную таблицу .Берем банальный интернет магазин. Допустим там 300000 товаров (неск. сотен групп) и большинство имеет какие-то поисковые х-ки.
Сколько понадобится полей в этой связанной таблице ?
Что делать если постоянно появляются новые х-ки товаров (ежедневно) ?
Добавлять поля ? На лету ?
Неправильно вставили. Удалять поле ?
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39085083
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexNext Вопросы.
1) Какие есть альтернативы моему варианту?
2) Где слабое место описанной реализации?
Шо опять, опять кто-то не сделал домашнее задание и не поискал достоинства, недостатки, область применения, альтернативы EAV
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39085099
LexNext
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинВам эта причина кажется убедительной? :)

Увы, да! Надо стараться подстраховываться.
Хотя, предвижу, что Вы можете сказать в ответ: "от корявых рук не подстрахуешься".

Про выходы согласен - он не один.
Кстати, как альтернатива EAV и длинной таблицы хар-тик - это, действительно, набор таблиц под каждый раздел хар-тик.
Это очень оправдано в том плане, что размер одежды, только в одежде, и такой хар-тики нет в электронике.
...
Рейтинг: 0 / 0
Хранение характеристик товаров. Как лучше спроектировать.
    #39085113
LexNext
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSVLexNext Выход тут один: делать таблицу хар-тик 1 к 1 к товару.
Т.е. название и описание, цены мы храним в одном месте, а вот если нужны хар-тики, то при необходимости подключаем связанную таблицу .Берем банальный интернет магазин. Допустим там 300000 товаров (неск. сотен групп) и большинство имеет какие-то поисковые х-ки.
Сколько понадобится полей в этой связанной таблице ?
Что делать если постоянно появляются новые х-ки товаров (ежедневно) ?
Добавлять поля ? На лету ?
Неправильно вставили. Удалять поле ?

Вы сейчас говорите про "псевдодинамику".
Смотрите, ну добавил модератор хар-тику и даже начал заполнять значения ее в товарах?
Какой толк?
Она появится в фильтрах с нужной версткой? - Нет.
Она правильно отобразится на страницах отображения товаров? - Нет.
Должен придти программист и это прописать и это обработать, т.к. хар-ка сама по себе может за собой тянуть определенную бизнес-логику.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение характеристик товаров. Как лучше спроектировать.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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