Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как загрузить данные из БД в древовидный доменный объект / 7 сообщений из 7, страница 1 из 1
30.10.2011, 20:57
    #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
30.10.2011, 21:13
    #37504544
maxterbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить данные из БД в древовидный доменный объект
Есть еще другая стратегия: Анализируем последовательно каждую запись, если нет ИД создаем, если нет парент ИД, тоже создаем, если есть парент ИД просто добавляем в него и так рекурсивно.
...
Рейтинг: 0 / 0
30.10.2011, 21:21
    #37504550
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить данные из БД в древовидный доменный объект
maxterbearно хочется сделать только один SELECT (для производительности)Так и сделайте, какие проблемы?
...
Рейтинг: 0 / 0
31.10.2011, 09:44
    #37504787
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить данные из БД в древовидный доменный объект
maxterbear,
- вы описали только таблицу классификатора в БД. Где таблица объектов?
- некоторые субд поддерживают в запросах деревянные запросы (на форум субд)
- обязательно провести нагрузочное тестирование вашей модели
- проектировать дерево в логической модели необязательно деревом в физической
http://www.databaseanswers.org/data_models/
...
Рейтинг: 0 / 0
31.10.2011, 10:17
    #37504835
Diagor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить данные из БД в древовидный доменный объект
в mssql есть тип hierarchyid (это путь в дереве)
по нему можно выбирать подчинённые указанного и сортировать (в т. ч. с
использованием кластерного индекса)

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

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


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