|
|
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! СУБД: реляционная - MsSql Есть различные категории товаров. Каждая категория товара имеет свой набор хар-тик для товаров. Харк-тики могут различного типа: число, текст, значение списка, множественное значение списка Поэтому напрашивается вот такая вот таблица хранения значени при первом рассмотрении: ___________________ ProductPropertyValue: ID ProductId (ид товара) PropertyId (ид свойства) ValueDecimal (хранение значения типа Decimal) ValueText (хранение значения типа Text) ValueListId (хранение ид списка предустановленных значений при связи много к одному, т.е. один товар может иметь одно значение хар-тики - Цвет: красный) __________________________ Таблица относительно нормальная, но есть НО - что делать, если в товаре появляется хар-тика - "Доступные режимы" и в ней должны идти перечисления предустановленных значений в товаре, т.е. связь много ко многим? Вариант, который у меня напрашивается следующий: не делать уникальным значение ключа ProductId PropertyId и дать возможность добавлять несколько значений с одинаковыми значениями этой связки. Вопросы. 1) Какие есть альтернативы моему варианту? 2) Где слабое место описанной реализации? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 14:20 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LexNext, Сделать универсальный справочник (ТипСправочника,Ид->Значение) и ещё один вид значения в ProductPropertyValue -- ссылку на универсальный справочник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 14:24 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LexNextТаблица относительно нормальная, но есть НО - что делать, если в товаре появляется хар-тика - "Доступные режимы" и в ней должны идти перечисления предустановленных значений в товаре, т.е. связь много ко многим? Сделать ещё возможност делать значения в виде множественного списка. Да, многие-ко-многим будет, ещё одна таблица. Ничего страшного. LexNextВариант, который у меня напрашивается следующий: не делать уникальным значение ключа ProductId PropertyId и дать возможность добавлять несколько значений с одинаковыми значениями этой связки. Вопросы. 2) Где слабое место описанной реализации? Нет, так не пойдёт. Таблица без ключа -- это очень плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 14:27 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
Сделать поле Text и хранить там HTML/XML/JSON/RTF/что в голову взбредёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 14:28 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
Вопрос в дальнейшим фильтрации значений и скорости их выборки. Я наблюдал в одном высокногруженном магазине схему БД. Примечательно там была таблица хар-тик, а точнее ее отсутствие. Значения хар-тик хранились в той же таблице что и товары, и каждое значение было еще отдельным полем в таблице. Разработчики хвалились, что скорость поиска в разы выше чем битрикса и прочих продуктов. У них полей хар-тик там было чуть более 500 суммарно (представляете себе масштаб таблицы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 15:09 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LexNextЗначения хар-тик хранились в той же таблице что и товары, и каждое значение было еще отдельным полем в таблице. Разработчики хвалились, что скорость поиска в разы выше чем битрикса и прочих продуктов. В случае сложных поисков типа "ХарактеристикаА равна А и ХарактеристикаB равна B1 или B2 и ХарактеристикаС не равна C" - в это легко можно поверить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 15:21 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
Все равно этот подход не совсем корректен и вот почему. При использовании ORM фреймоворков, при дефолтных запросах (не прописывать жестко набор выбираемых полей) выборки, возвращаемая коллекция товаров представляет собой коллекцию огромнейших объектов, которые могут весьма подтормаживать прилоежние. Выход тут один: делать таблицу хар-тик 1 к 1 к товару. Т.е. название и описание, цены мы храним в одном месте, а вот если нужны хар-тики, то при необходимости подключаем связанную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 15:35 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинВ случае сложных поисков типа "ХарактеристикаА равна А и ХарактеристикаB равна B1 или B2 и ХарактеристикаС не равна C" - в это легко можно поверить А вот для нечёткого поиска типа "вывести товары в порядке убывания релевантности (количества совпадающих характеристик)" эта их схема уже не так привлекательна. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 15:40 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LexNextВсе равно этот подход не совсем корректен и вот почему. При использовании ORM фреймоворков, при дефолтных запросах (не прописывать жестко набор выбираемых полей) выборки, возвращаемая коллекция товаров представляет собой коллекцию огромнейших объектов, которые могут весьма подтормаживать прилоежние. Т.е. "если взять ОРМ и неправильно его пользовать, то можно выстрелить себе в ногу". Вам эта причина кажется убедительной? :) LexNext Выход тут один: делать таблицу хар-тик 1 к 1 к товару. Выход разумеется не один (в частности, можно делать много таблиц характеристик, для каждой категории с отдельным набором характеристик - свою) Я говорил лишь про скорость поиска в сравнении с вертикальным EAV-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 15:45 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LexNext Выход тут один: делать таблицу хар-тик 1 к 1 к товару. Т.е. название и описание, цены мы храним в одном месте, а вот если нужны хар-тики, то при необходимости подключаем связанную таблицу .Берем банальный интернет магазин. Допустим там 300000 товаров (неск. сотен групп) и большинство имеет какие-то поисковые х-ки. Сколько понадобится полей в этой связанной таблице ? Что делать если постоянно появляются новые х-ки товаров (ежедневно) ? Добавлять поля ? На лету ? Неправильно вставили. Удалять поле ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 15:58 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LexNext Вопросы. 1) Какие есть альтернативы моему варианту? 2) Где слабое место описанной реализации? Шо опять, опять кто-то не сделал домашнее задание и не поискал достоинства, недостатки, область применения, альтернативы EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 16:27 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинВам эта причина кажется убедительной? :) Увы, да! Надо стараться подстраховываться. Хотя, предвижу, что Вы можете сказать в ответ: "от корявых рук не подстрахуешься". Про выходы согласен - он не один. Кстати, как альтернатива EAV и длинной таблицы хар-тик - это, действительно, набор таблиц под каждый раздел хар-тик. Это очень оправдано в том плане, что размер одежды, только в одежде, и такой хар-тики нет в электронике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 16:34 |
|
||
|
Хранение характеристик товаров. Как лучше спроектировать.
|
|||
|---|---|---|---|
|
#18+
LSVLexNext Выход тут один: делать таблицу хар-тик 1 к 1 к товару. Т.е. название и описание, цены мы храним в одном месте, а вот если нужны хар-тики, то при необходимости подключаем связанную таблицу .Берем банальный интернет магазин. Допустим там 300000 товаров (неск. сотен групп) и большинство имеет какие-то поисковые х-ки. Сколько понадобится полей в этой связанной таблице ? Что делать если постоянно появляются новые х-ки товаров (ежедневно) ? Добавлять поля ? На лету ? Неправильно вставили. Удалять поле ? Вы сейчас говорите про "псевдодинамику". Смотрите, ну добавил модератор хар-тику и даже начал заполнять значения ее в товарах? Какой толк? Она появится в фильтрах с нужной версткой? - Нет. Она правильно отобразится на страницах отображения товаров? - Нет. Должен придти программист и это прописать и это обработать, т.к. хар-ка сама по себе может за собой тянуть определенную бизнес-логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 16:41 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=18&tid=1540456]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 139ms |

| 0 / 0 |

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