powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Избитый вопрос - реализация каталога товаров
25 сообщений из 105, страница 1 из 5
Избитый вопрос - реализация каталога товаров
    #37882910
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!
Никогда раньше не занимался проектированием базы для крупных проектов, поэтому столкнулся с проблемой выбора структуры бд.

Задача проста(?) как три копейки - структура базы каталога товаров. С реализацией вложенных категорий все понятно - nested sets (или уже придумали что-то получше?).

Вопрос в хранении товаров и их характеристик. Кол-во товаров несколько миллионов, кол-во характеристик к каждому из них - от 20 до 100 (а может и больше). Из функционала ничего сверхъестественного - поиск, вставка, сравнение товаров, поиск схожих.

Наиболее реальной кажется такая структура:

Справочник
id
название

Значения справочника
id
id справочника
Название

Параметры
Id
id категории
название параметра
тип параметра (строка, число, дата, список)
id справочника

Товар
id
id категории
название, цена и прочее

параметры товаров
id
id параметра
id товара
значение

Насколько удачно такое решение? В плане скорости выборок (вывод категории, поиск по параметрам)?
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883038
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital God Насколько удачно такое решение?
Ну про EAV здесь было сломано немало копий.
В двух словах - хорошо для начала, хуже потом, очень плохо, когда проект разрастется
Digital GodВ плане скорости выборок (вывод категории, поиск по параметрам)? Очень плохо. Тем хуже, чем больше столбцов (параметров)

По поводу деревьев - http://www.osp.ru/pcworld/2007/03/4199032/

Задавайте конкретные вопросы, получите более конкретные ответы.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883111
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257В двух словах - хорошо для начала, хуже потом, очень плохо, когда проект разрастется
Я конечно догадывался, что с ростом базы товаров, все это дело просядет. А какие еще есть варианты кроме EAV?

SERG1257По поводу деревьев - http://www.osp.ru/pcworld/2007/03/4199032/
Спасибо, почитаю
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883180
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие еще есть варианты кроме EAV?Никаких.
Есть варианты реализации EAV. Как плохие, так и хорошие.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883183
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital GodSERG1257В двух словах - хорошо для начала, хуже потом, очень плохо, когда проект разрастется
Я конечно догадывался, что с ростом базы товаров, все это дело просядет.Проседание конечно будет, по сравнению с класической схемой, но не такое, чтоб вообще всё перестало работать. И выхода нет, для произвольных наборов характеристик без вариантов.
Digital GodА какие еще есть варианты кроме EAV?Точнее, варианты есть, точнее один вариант - делать классическую схему, в которой параметры товара - атрибуты сущности.
Но этот вариант сильно сложнее в реализации. Реализовать можно 2-мя способами:
1. таблица с набором полей - Param1...ParamN
2. с отдельными таблицами для каждого набора параметров (то есть учитывая тот факт, что набор параметров уникален не для каждого товара, а для каких то групп товаров, и в принципе таких уникальных наборов будет не так много).
Но тут важно, как будут использоваться эти параметры, будет поиск по параметру только в одной группе товаров или среди всех товаров.
3. Да, ещё один вариант: Набор параметров кладут в одно поле (допустим, xml). Можно использовать, если нет поиска по параметрам.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883339
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg1. таблица с набором полей - Param1...ParamN
Думаю этот вариант отпадает сразу. с учетом уникальности набора параметром, пусть даже только для группы продуктов, получится очень много таблиц.

alexeyvg2. с отдельными таблицами для каждого набора параметров (то есть учитывая тот факт, что набор параметров уникален не для каждого товара, а для каких то групп товаров, и в принципе таких уникальных наборов будет не так много).
Но тут важно, как будут использоваться эти параметры, будет поиск по параметру только в одной группе товаров или среди всех товаров.
3. Да, ещё один вариант: Набор параметров кладут в одно поле (допустим, xml). Можно использовать, если нет поиска по параметрам.
Мне кажется что для обоих вариантов в качестве поиска подойдет Sphinx (грамотно настроенный). По сути это будет отличным решением для поиска и вывода схожих продуктов. Для сокращения накладок ограничимся поиском по этой же категории.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883344
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, как яндекс маркет хранит данные?
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883551
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital God,

К сожалению вам никто тут не поможет - одни общие рассуждения и сражения со сферическими конями в вакууме, одни наборы умных слов, но конкретики вы тут не найдете - уже несколько человек пало на этом пути :))

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

Еще раз скажу - к сожалению, на данной площадке по поводу каталога товаров реальных решений вам тут не подскажут! ))
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883579
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spЯ тоже пробовал начать такую же тему

Но ты же сделал свой каталог, вот и сыпь аффтару свою конкретику. Или так и не сделал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883657
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> вам никто тут не поможет

Правильно так: ни за вас, ни за кого-то еще никто бесплатно работать не будет. Готовое решение стоит денег. Килобаксов за пять вам какой-нибудь студентеГ нарисует что-то типа яндекс-маркета, - пишите объяву в разделе "работа".

Форум называется "проектирование". Хотите научиться проектировать - задавайте вопросы.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883713
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sp,
По сути конкретика не нужна - нужно понять направление в котором двигаться. Сюда я обратился, чтобы узнать мнение людей какую модель стоит использовать и не придумали что-то новое.

guest_20040621,
Я не прошу ни кого за меня что-то делать. Форум называется проектирование бд я и задал вопрос - по какой модели лучше делать базу для каталога.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital Godя и задал вопрос - по какой модели лучше делать базу для каталога.

И получил ответ: EAV - единственная работоспособная модель.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883928
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> по какой модели лучше делать базу для каталога

Вы критерий "лучшести" сформулировать забыли. Хотите тяп-ляп, быстро и одноразово - это EAV. Хотите, чтобы ваша база данных имела нормальный жизненный цикл, - забудьте про EAV как про страшный сон.

То, что вы назвали "каталог товаров" - одна из наиболее трудоемких задач для проектирования. Нет ни одной реализации, которую можно было бы считать удовлетворительной. Начинать учиться проектированию лучше с задач попроще.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883929
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Нэть
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37883979
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Вы критерий "лучшести" сформулировать забыли. Хотите тяп-ляп, быстро и
> одноразово - это EAV. Хотите, чтобы ваша база данных имела нормальный жизненный
> цикл, - забудьте про EAV как про страшный сон.

Чем это вам EAV не угодил ?
Да...

Про "нормальный жизненный цикл" -- тоже -- у всех "нормальный" цикл совсем
разный.

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

Она "трудна" только потому что постановки задачи у всех разные.
А.Тенцер в своё время делал на EAV каталоги товаров (предм. область --
фармацевтика, на сколько я помно) -- и ничего. В сети есть его статьи,
можно почитать, там про все грабли расписано, как обходить -- тоже.

И без EAV это тоже делается. Отношение подкатегории в руки -- и вперёд,
нужно только правильно иерархию классов товаров прописать правильно
(это сложно в общем случае, но в случае ограниченнойти только рамками
предметной области вполне достижимая задача).

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884007
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 07/17/2012 11:35 PM, Digital God wrote:

> Вопрос в хранении товаров и их характеристик. Кол-во товаров несколько
> миллионов, кол-во характеристик к каждому из них - от 20 до 100 (а может и
> больше). Из функционала ничего сверхъестественного - поиск, вставка, сравнение
> товаров, поиск схожих.

Кстати, RDF можно было бы использовать для этого (оно конечно -- тот же почти
EAV, только вид сбоку, но там полиморфизм атрибутов изначально заложен в модель
данных).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884011
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Задача проста(?) как три копейки - структура базы каталога товаров. С
> реализацией вложенных категорий все понятно - nested sets (или уже придумали
> что-то получше?).
>
> Вопрос в хранении товаров и их характеристик. Кол-во товаров несколько
> миллионов, кол-во характеристик к каждому из них - от 20 до 100 (а может и
> больше). Из функционала ничего сверхъестественного - поиск, вставка, сравнение
> товаров, поиск схожих.

Поиск схожих достаточноможет быть сложным.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884145
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Чем это вам EAV не угодил ?

Угодил. Я использую такие структуры. Но я и понимаю границы применения таких структур.

Меня тошнит, когда я вижу, например, интернет-магазин, сделанный таким образом. То, что это дико неудобно - хрен с ним. То, что теряется половина существенных данных - тоже хрен с ним. Важно то, что в результате кривых ручонок дерьмокодеров юзер получает возможность сравнения вещей, которые невозможно корретно сравнивать. Просто потому, что дерьмокодеры не подозревают о том, что большинство характеристик контекстно-зависимы и не умеют этот контекст описывать. Никак. Потому, что эти дерьмокодеры читали Тенцера вместо того, чтобы читать Дейта.

Это если коротко.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884229
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital God Думаю этот вариант отпадает сразу. с учетом уникальности набора параметром, пусть даже только для группы продуктов, получится очень много таблиц.И кого когда напрягало большое количество таблиц.
Да, это планида проектировщика, пытать заказчика на предмет, что же тебе завтра в голову придет, где стелить соломку.
EAV - это способ сделать это потом. В конечном итоге (когда структура данных устаканится) вы наделаете для своей EAV вьюх, моделирующих обычные таблицы, ибо работать с реляционными данными гораздо удобнее.

Вообще, рекомендую отталкиваться от другого - каталог товаров это система с редкой записью по сравнению с выборками. Так что подходы лучше подсматривать у отчетных систем.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884291
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Чем это вам EAV не угодил ?

Потому, что эти дерьмокодеры читали Тенцера вместо того, чтобы читать Дейта.
.

Но Тендер наверняка читал Дейта, так что опосредованно ... :-)

получается проблема единственно в том что нужно уметь делать правильно бд с EAV. Но без Eav нужно тоже уметь делать бд правильно. Получается, что проблема есть что так, что эдак.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884297
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital God,

У тебя в некоторых таблицах лишние суррогатное ключи (ид), убирай где не нужно. Например,в параметрах товара.

2) параметры разных типов надо хранить в разных таблицах или в разных полях одной таблицы. Иначе и индексировать плохо, и нарушение доменной целостности может быть.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884404
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, на работе не было возможности нормально ответить на вопросы.

Dimitry SibiryakovDigital Godя и задал вопрос - по какой модели лучше делать базу для каталога.

И получил ответ: EAV - единственная работоспособная модель.

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

guest_20040621 Вы критерий "лучшести" сформулировать забыли. Хотите тяп-ляп, быстро и одноразово - это EAV. Хотите, чтобы ваша база данных имела нормальный жизненный цикл, - забудьте про EAV как про страшный сон.
Мне кажется в таком вопросе критерий "лучшести" очевиден - скорость работы, и как правильно заметил SERG1257 - каталог товаров это система с редкой записью по сравнению с выборками. Значит упор на качество и скорость выборок.

guest_20040621 То, что вы назвали "каталог товаров" - одна из наиболее трудоемких задач для проектирования. Нет ни одной реализации, которую можно было бы считать удовлетворительной. Начинать учиться проектированию лучше с задач попроще.
Не вижу ничего трудоемкого в данной задаче. Есть модели проектирования со своими плюсами и минусами. Надо выбрать одну и постараться компенсировать ее минусы через какие-то методы (поиск через sphinx, грамотное индексирование, в конце концов - масштабируемость ресурсов сервера). Понятное дело что из-за специфики проекта будут свои тонкости в реализации - в целом задача достаточна простая.

MasterZivКстати, RDF можно было бы использовать для этого (оно конечно -- тот же почти
EAV, только вид сбоку, но там полиморфизм атрибутов изначально заложен в модель
данных).

Каюсь, про RDF не знаю ничего. На днях обязательно почитаю и поищу примеры реализации.

MasterZivПоиск схожих достаточноможет быть сложным.

Он вполне может быть решен через sphinx. Или sphinx не панацея от всего и вся? :)

SERG1257Вообще, рекомендую отталкиваться от другого - каталог товаров это система с редкой записью по сравнению с выборками. Так что подходы лучше подсматривать у отчетных систем.
С подходами отчетных систем знаком хорошо по специфике работы, соглашусь что какие-то идеи могут подойти для улучшения структуры каталога.

MasterZivDigital God,
У тебя в некоторых таблицах лишние суррогатное ключи (ид), убирай где не нужно. Например,в параметрах товара.
2) параметры разных типов надо хранить в разных таблицах или в разных полях одной таблицы. Иначе и индексировать плохо, и нарушение доменной целостности может быть.

1) Я просто писал пример на скорую руку, конечно ничего лишнего в конечном результате не будет.
2) согласен. поскольку типов данных не так много (строка, число и дата) - можно обойтись 3 таблицами.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884484
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital Godкак видно из рассуждений - не только EAV подходит

Очевидно, мне нужно было выделить слово "работоспособная" жирным крупным шрифтом... Но кто
я такой, чтобы охранять Ваши яйца от граблей?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884501
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Digital GodИнтересно, как яндекс маркет хранит данные?EAV используют.
Я делал (не один, конечно) проект Подбери.ру, его купил яндекс и так появился яндекс маркет :-)
Конечно, наверняка код они за эти 10 лет переписали, но вряд ли принцип поменялся.
...
Рейтинг: 0 / 0
Избитый вопрос - реализация каталога товаров
    #37884565
Digital God
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovDigital Godкак видно из рассуждений - не только EAV подходит

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

Никто не отрицал EAV, просто рассматриваем варианты реализация и все за и против.

alexeyvgDigital GodИнтересно, как яндекс маркет хранит данные?EAV используют.
Я делал (не один, конечно) проект Подбери.ру, его купил яндекс и так появился яндекс маркет :-)
Конечно, наверняка код они за эти 10 лет переписали, но вряд ли принцип поменялся.
Я где-то так и думал что это EAV с модификациями.

В общем буду развивать тему EAV.
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 1 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Избитый вопрос - реализация каталога товаров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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