powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Каталог товаров/услуг 1600 категорий
24 сообщений из 24, страница 1 из 1
Каталог товаров/услуг 1600 категорий
    #39307344
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Собираюсь делать проект. Доска объявлений. 1600 категорий (дерево). Товар в каждой категории может иметь собственные атрибуты. Новые категории/атрибуты могут добавляться, но это редко. Нужен полнотекстовый поиск (заголовок. описание товара) а также фасетный, по атрибутам в конкретной категории. Базу думаю взять MySQL + Sphinx для поиска. С EAV работал, но не нравится, сложные запросы, получается какая-то БД внутри БД. Однако, если идти по пути наследования (Class Table Inheritance), придется создать около 1600 таблиц, чего я пока что никогда не делал и меня это смущает. Кто-нибудь создавал/поддерживал столько таблиц для таких целей? Это правильный путь или нет?

Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39307351
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577Доброго времени суток! Собираюсь делать проект. Доска объявлений. 1600 категорий (дерево). Товар в каждой категории может иметь собственные атрибуты. Новые категории/атрибуты могут добавляться, но это редко. Нужен полнотекстовый поиск (заголовок. описание товара) а также фасетный, по атрибутам в конкретной категории. Базу думаю взять MySQL + Sphinx для поиска. С EAV работал, но не нравится, сложные запросы, получается какая-то БД внутри БД. Однако, если идти по пути наследования (Class Table Inheritance), придется создать около 1600 таблиц, чего я пока что никогда не делал и меня это смущает. Кто-нибудь создавал/поддерживал столько таблиц для таких целей? Это правильный путь или нет?

Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя.

Э-э-э зачем?
На первых порах можно вообще без БД.
Каталоги организуйте в виде файлового дерева.
А атрибуты сообщений храните в JSON-файлах.
Для полнотекстового поиска можно воспользоваться любым файловым полнотекстовым поиском.
А там уже увидите какую БД построить
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39307649
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul, Нет, БД нужна. Товары/услуги должны добавлять несколько пользователей. Т.е. нужно будет обеспечить конкурентный доступ, разграничение прав, блокировки. и т..п. Думаю без БД тут никак.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39307700
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1600 таблиц - само по себе не трагедия, тем паче если Вы все равно будете использовать ORM и задача повторного использования SQL-кода не стоит.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39307725
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Думаю, сначала прототип сделаю не на все категории, посмотрю, как пойдет, а потом буду расширять. Да, код будет простой, но его будет много. В сфиксе (для фасетов), видимо, также придется гору индексов создавать.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39307811
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
па сабжу: EAV. Для каждой категории список соотв. ей ID атрибутов. Например "обороты/минуту" могут быть и в HDD и в стиральной машине.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39307846
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577Да, код будет простой, но его будет много.

Вы же говорите что Ваш ОРМ возьмет на себя всю работу с таблицами - так какого кода у Вас будет много? На процедурном-то языке с ОРМ-ом никто не мешает написать один механизм поиска на все 1600 категорий.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308089
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Думаю, много кода будет для организации добавления и редактирования, хотя надо пробовать.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308090
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSV,

Я это понимаю. Все-таки хочется чтобы была нормальная схема данных, не зависимая от кода приложения.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308108
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя.

Не надо отдельных сущностей на картошку и марсоход.
С точки зрения заявленной задачи - это однотипные объекты.

Это Товары, информация о которых размещается Авторами Объявлений.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308109
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AnSi_Sr,

Ну так то да. Я и хочу создать базовую таблицу, для хранения сущности "Товар", а атрибуты конкретных товаров сохранять в маленьких таблицах, на каждый тип товара. Думаю, в MySQL либо это, либо EAV.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308137
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577LSV,
Я это понимаю. Все-таки хочется чтобы была нормальная схема данных, не зависимая от кода приложения.Никакого кода приложения. Чистый SQL.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308165
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я голосую за 6 НФ :)

Есть интересный подход - Anchor. И вроде его использует Avito .

Я описывал его немного в этой статье .

Для вашей задачи я бы придумал какой-нибудь модифицированный Anchor. И генерил бы из него SQL для создания и модификации таблиц и код для доступа к БД. Последний может с использованием ORM, может нет.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308169
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577Думаю, много кода будет для организации добавления и редактирования, хотя надо пробовать.
ОРМ, в котором надо самому писать код для добавления и редактирования каждого типа объектов - это какой-то странный ОРМ.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308201
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

Я имею ввиду валидацию форм для добавления/редактирование, html для отображения форм, хотя по идее этого добра не должно быть больше чем с EAV/


LSV,

Да, и HTML там же рендерить :)


Ares_ekb,

Спасибо, интересно. С Anchor вообще не знаком, почитаю статью, погуглю.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308275
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собираюсь делать проект. Доска объявлений. 1600 категорий (дерево). Товар в каждой категории может иметь собственные атрибуты. Новые категории/атрибуты могут добавляться, но это редко. Нужен полнотекстовый поиск (заголовок. описание товара) а также фасетный, по атрибутам в конкретной категории. Базу думаю взять MySQL + Sphinx для поиска.

бери сразу pg и elastic или solar.

С EAV работал, но не нравится, сложные запросы, получается какая-то БД внутри БД. Однако, если идти по пути наследования (Class Table Inheritance), придется создать около 1600 таблиц, чего я пока что никогда не делал и меня это смущает.

это немного, не мало, но и немного, средняя бд по сложности.


Кто-нибудь создавал/поддерживал столько таблиц для таких целей? Это правильный путь или нет?


да, правильный, если ты не хочешь EAV (впрочем, правильность от этого не зависит)

Для облегчения задачи хочу взять ORM (Doctrine 2), получится около 1600 классов сущностей. Работу с таблицами доктрина возьмет на себя.


ну, еще лучше. только помни, что ORM это только CRUD, аналитические и поисковые запросы придется писать руками или генерировать.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308300
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Большое спасибо за ответы
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308311
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю тут основная сложность в синхронизации реляционной модели данных, серверного кода, клиентского кода, пользовательского интерфейса. В идеале нужна одна модель, из которой можно генерить остальные модели, код, шаблоны для интерфейса и т.п. Причем, желательно, чтобы эту модель мог редактировать администратор каталога товаров. Есть разные инструменты, в т.ч. ORM фреймвоки, которые частично решают эту задачу синхронизации. Некоторые ориентированы на разработчиков, другие - на контент-менеджеров.

Это всё банальные вещи, я просто пытаюсь описать проблему в целом, чтобы можно было оценивать те или иные решения в плане того на сколько они поддерживают синхронизацию моделей, кода и т.п., удобства для админа, что в них уже реализовано, что придется допиливать самому.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308381
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ares_ekb,

Честно говоря, я не работал с такими кодогенерирующими фреймворками, пощоволяющими делать структуру БД и CRUD сразу. Думаю, инструменты, обеспечивающие такую функциональность стоят дорого и ими нужно учиться пользоваться.Я использовал PHP-фреймворки Yii и Symfony, думаю второй здесь подойдет лучше первого. Если знаете инструменты, которые здесь подойдут лучше, буду признателен за совет.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39308497
Ares_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577,

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

В принципе при наличии знаний, минимального опыта и желания. Редактор модели и кодогенераторы в первом приближении можно запилить за пару дней. Ровно такие какие нужны, а не навязываемые одним из фреймвоков.

Но опять-таки, чтобы получить эти минимальные знания и опыт нужно время. По ORM фреймвокам и т.п. я ничего хорошего не подскажу, в последнее время больше занимался кодогенераторами и т.п.

Напишите, пожалуйста, что у вас в итоге получится. Очень интересно.
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39310980
Anton5577
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вопрос про наследование таблиц. У категорий должна быть своя таблица, хранящая древовидную структуру (NestedSet, например), или же нужно исходить из того, что товары/услуги и так организованы иерархически (наследование таблиц) и в качестве идентификатора категории нужно использовать идентификатор типа (дискриминатор)?
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39310985
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577Еще вопрос про наследование таблиц. У категорий должна быть своя таблица, хранящая древовидную структуру (NestedSet, например), или же нужно исходить из того, что товары/услуги и так организованы иерархически (наследование таблиц) и в качестве идентификатора категории нужно использовать идентификатор типа (дискриминатор)?
Это зависит от задач - если планируется какой-то функционал, который будет лазить по этим nested set'ам и что-то с ними делать, то они нужны, если нет - зачем?
Если, скажем, Вы хотите, чтобы Ваш ORM сам по этой древовидной структуре находил названия таблиц для категорий и мапил их, и он это действительно умеет - таблица-дерево, очевидно, нужна. Если все равно соответствие всем категориям надо прописывать вручную в коде - зачем их хранить где-то еще?
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39311151
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос про наследование таблиц. Какое еще нафиг наследование ? В БД еще этой шняги не хватало. :)
...
Рейтинг: 0 / 0
Каталог товаров/услуг 1600 категорий
    #39311171
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton5577Еще вопрос про наследование таблиц. У категорий должна быть своя таблица, хранящая древовидную структуру (NestedSet, например), или же нужно исходить из того, что товары/услуги и так организованы иерархически (наследование таблиц) и в качестве идентификатора категории нужно использовать идентификатор типа (дискриминатор)?

В PostgreSQL есть http://postgresql.ru.net/manual/ddl-inherit.htmlнаследование таблиц.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Каталог товаров/услуг 1600 категорий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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