Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
4 / 4 / 3
Регистрация: 15.12.2015
Сообщений: 184

Как правильно организовать генерацию дерева зависимостей?

28.02.2018, 09:48. Показов 2421. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно организовать генерацию дерева зависимостей?

У меня БД с таблицей в которой у меня хранятся зависимостей одних документов от других. Эти данные я использую для генерации дерева документов в TreeView (стуктура конструкторской документации).
Сталкнулся с вопосом оптимального выполнения этого процесса. У меня на примете 2 варианта решения:
1. Запросить из БД сразу все данные и сохранить в список зависимостей (List<Dependency>), а всю выборку проводить при помощи LINQ запросов.
Плюсы:
а. Один запрос к БД
б. Нет необходимости таскать за собой логику работы с СУБД
Минусы:
а. Больший расход ресурсов, особенно если таблица зависимостей большая
б. LINQ запросы дольше (спорно и зависит от количества зависимостей)
2. Запросить из БД данные по необходимости в список зависимостей (List<Dependency>). Всю выборку проводить SQL-запросами.
Плюсы:
а. Малый расход ресурсов вне зависимости от размера таблицы зависимостей
б. Относительно быстрая выборка данных из БД
Минусы:
а. Множество запросов к БД
б. Необходимость таскать за собой логику работы с СУБД

Работа с СУБД ведутся с помощью Dapper, т.е. запросы, выборки и маппинг запросов на класс Dependency.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.02.2018, 09:48
Ответы с готовыми решениями:

Опросник. Создание дерева зависимостей в treeView, сохранение дерева в XML, построение дерева в treeView из XML
Всем доброго времени суток. Тема является продолжением вот этой темы. Создаю 2ю, так как там был другой вопрос, который скорее...

Подскажите как правильно сделать генерацию случайных чисел
Может кто-то подсказать как сделать генерацию случайных чисел. На примере этого x= 2+ (Math.random() * ((7 - 2) + 5)); Только там...

Как правильно реализовать непроходимость и генерацию стен в игре
Я тут накодил вывод массива, рандомную генерацию стен и управление игроком(@) для игрушки. uses crt; const m = 24; n = 48; ...

6
Эксперт .NET
 Аватар для Usaga
14088 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
28.02.2018, 11:44
Цитата Сообщение от RuS_984 Посмотреть сообщение
а. Один запрос к БД
Конского размера.

Цитата Сообщение от RuS_984 Посмотреть сообщение
б. Нет необходимости таскать за собой логику работы с СУБД
Этого и так быть не должно. Логика работы с базой должна быть изолирована и доступна по мере необходимости. Ничего таскать не надо.

Цитата Сообщение от RuS_984 Посмотреть сообщение
а. Множество запросов к БД
Ничего страшного, она выдержит, она - молодец.

Цитата Сообщение от RuS_984 Посмотреть сообщение
б. Необходимость таскать за собой логику работы с СУБД
См. выше.

Запрашивайте у базы данные в готовом виде, она на то и СУБД чтобы не только хранилищем выступать (это и файлы обычные умеют), пользуйтесь преимуществами СУБД.

Логику работы с базой выделит в отдельный логический уровень.
0
4 / 4 / 3
Регистрация: 15.12.2015
Сообщений: 184
28.02.2018, 12:36  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Конского размера.
Не такого уж и конского... Таблица на 8 столбцов с JOIN.

Цитата Сообщение от Usaga Посмотреть сообщение
Этого и так быть не должно. Логика работы с базой должна быть изолирована и доступна по мере необходимости. Ничего таскать не надо.
Цитата Сообщение от Usaga Посмотреть сообщение
Логику работы с базой выделит в отдельный логический уровень.
Не так выразился. Не логику работы с СУБД, а соответсвующий репозиторий.
0
Эксперт .NET
 Аватар для Usaga
14088 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
28.02.2018, 12:38
RuS_984, лучше сразу запросить нужное.

А что проблематичного в том, чтобы иметь ссылку на репозиторий там, где это нужно?)
0
4 / 4 / 3
Регистрация: 15.12.2015
Сообщений: 184
28.02.2018, 12:53  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
А что проблематичного в том, чтобы иметь ссылку на репозиторий там, где это нужно?)
Абсолютно ничего. Мне просто интересно как делают более опытные специалисты.

Цитата Сообщение от Usaga Посмотреть сообщение
RuS_984, лучше сразу запросить нужное
Это вопрос или утверждение? Если утверждение, то получатся возвращение к моей идее разового запроса к БД....

Для построения дерева я использую рекурсивные запросы для каждого подуровня. Соответственно у меня количество запросов (в общем случае) равно количеству подуровней
0
Эксперт .NET
 Аватар для Usaga
14088 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
28.02.2018, 12:58
RuS_984, специалисты тящут только то, что нужно. Если предполагается работа с базой - репозиторий, если с данными, то - данные.

Цитата Сообщение от RuS_984 Посмотреть сообщение
Это вопрос или утверждение?
Это утверждение. Если вам сразу нужны все данные, которые вы будете "вертеть" в код, то тащите всё. Если нужно только какое-то подмножество, то только его и берите, не надо тащить всё, а потом фильтровать.

У нас была похожая задачка давно. Мы там вытаскивали только верхний уровень. Все последующие запрашивали по мере надобности. Работает на ура. Но у нас там реально дофига было элементов. Если у вас их не больше сотни, то можно и сразу всё выдернуть и не париться "правильностями".
0
4 / 4 / 3
Регистрация: 15.12.2015
Сообщений: 184
28.02.2018, 13:19  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Мы там вытаскивали только верхний уровень. Все последующие запрашивали по мере надобности.
Я так сделал для MVC-приложения. Получал данные из БД, собирал в JSON и передавал пользователю. А там силами JS и KnockOutJS формировал дерево
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2018, 13:19
Помогаю со студенческими работами здесь

Создать генерацию дерева процессов
Мне нужно создать генерацию дерева процессов.Как это реализовать? #include &lt;stdio.h&gt; #include &lt;unistd.h&gt; #include...

Как правильно организовать БД?
Извините за глупый, наверное, вопрос. Я самоучка и только начинаю познавать науку... Как правильно организовать БД? Пример: БД из...

Как правильно организовать?
У меня есть несколько классов и у них практически одинаковые функции, которые отличается парой типов, как мне правильно сделать базовые...

Как правильно организовать БД?
Есть база данных о предприятии. В ней есть данные об отделах и о сотрудниках. С сотрудниками всё понятно - сделаю столбец для id отдела, в...

Как правильно организовать сервер?
Здравствуйте! Спасибо за то, что обратили внимание на мою тему! В общем суть такова: я изучаю Java и в один момент решил, как и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru