powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как загрузить данные из БД в древовидный доменный объект
7 сообщений из 7, страница 1 из 1
Как загрузить данные из БД в древовидный доменный объект
    #37504539
maxterbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть стандартная база товаров (категории, товары)
Есть уровень бизнес логики Коллекция категорий с вложеными товарами или другими категориями.

Имеется два метода синхронизации доменного объекта с БД
Update() тут просто рекурсивно проходим дерево, а вот как решить вопрос с загрузкой данных из БД я не знаю

вот примерная схема:

записи в БД

ID ParentID Name
1 NULL Компьютеры
2 NULL Телевизоры
3 NULL Стиральные машины
4 1 Ноутбуки
5 1 Планшеты
6 1 Настольные

Объект должен быть такой

Коллекция "категории"

1 NULL Компьютеры
|
Ноутбуки
|
Планшеты
|
Настольные

2 NULL Телевизоры
3 NULL Стиральные машины


Уровней может бысть сколько угодно, поэтому наверное нужен какой-то рекурсивный алгоритм
я склоняюсь к тому чтобы сначало выбрать нулевой уровень и потом n+1 до конца, но хочется сделать только один SELECT (для производительности)


Что посоветуете?
...
Рейтинг: 0 / 0
Как загрузить данные из БД в древовидный доменный объект
    #37504544
maxterbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще другая стратегия: Анализируем последовательно каждую запись, если нет ИД создаем, если нет парент ИД, тоже создаем, если есть парент ИД просто добавляем в него и так рекурсивно.
...
Рейтинг: 0 / 0
Как загрузить данные из БД в древовидный доменный объект
    #37504550
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxterbearно хочется сделать только один SELECT (для производительности)Так и сделайте, какие проблемы?
...
Рейтинг: 0 / 0
Как загрузить данные из БД в древовидный доменный объект
    #37504787
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxterbear,
- вы описали только таблицу классификатора в БД. Где таблица объектов?
- некоторые субд поддерживают в запросах деревянные запросы (на форум субд)
- обязательно провести нагрузочное тестирование вашей модели
- проектировать дерево в логической модели необязательно деревом в физической
http://www.databaseanswers.org/data_models/
...
Рейтинг: 0 / 0
Как загрузить данные из БД в древовидный доменный объект
    #37504835
Diagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в mssql есть тип hierarchyid (это путь в дереве)
по нему можно выбирать подчинённые указанного и сортировать (в т. ч. с
использованием кластерного индекса)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как загрузить данные из БД в древовидный доменный объект
    #37514446
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxterbear,

Из вопроса не ясно, для чего предназначено дерево?
Могу предположить, что дерево, как это общепринято, предназначено для компактного представления иерархии объектов (товаров) пред ясны очи пользователя. Поскольку любая нормальная ИС не должна ставить ограничений на количество объектов в БД, то тебе при проектировании ИС надо рассчитывать на достаточно большое количество объектов. Предположим, их когда-нибудь будет 20 000 000. Сможет-ли твоя ИС загрузить сразу все записи в дерево на клиенте? Пожалуй, что нет. Отсюда напрашивается работоспособная тактика: Показываешь клиенту в дереве только записи нулевого уровня. Их должно быть немного, 5-7, чтобы пользователь мог окинуть их одним взглядом, не прокручивая окно. Далее, пользователь изъявляет желание просмотреть какую-то папку. В этот момент твоя программа должна сделать запрос к БД и выбрать записи первого уровня, у которых "родитель" выбранный пользователем элемент. И т.д. Если всё правильно спроектировано, то твоё приложение будет летать на любом количестве записей.
...
Рейтинг: 0 / 0
Как загрузить данные из БД в древовидный доменный объект
    #37514906
maxterbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем, спасибо за советы, сделал рекурсиную функцию )
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как загрузить данные из БД в древовидный доменный объект
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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