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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2) параметры разных типов надо хранить в разных таблицах или в разных полях одной таблицы. Иначе и индексировать плохо, и нарушение доменной целостности может быть.
...
Рейтинг: 0 / 0
18.07.2012, 19:14
    #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
18.07.2012, 20:27
    #37884484
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избитый вопрос - реализация каталога товаров
Digital Godкак видно из рассуждений - не только EAV подходит

Очевидно, мне нужно было выделить слово "работоспособная" жирным крупным шрифтом... Но кто
я такой, чтобы охранять Ваши яйца от граблей?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.07.2012, 20:52
    #37884501
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избитый вопрос - реализация каталога товаров
Digital GodИнтересно, как яндекс маркет хранит данные?EAV используют.
Я делал (не один, конечно) проект Подбери.ру, его купил яндекс и так появился яндекс маркет :-)
Конечно, наверняка код они за эти 10 лет переписали, но вряд ли принцип поменялся.
...
Рейтинг: 0 / 0
18.07.2012, 22:24
    #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]