powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вложенные иерархии: вычислять или хранить?
3 сообщений из 3, страница 1 из 1
Вложенные иерархии: вычислять или хранить?
    #35449223
jbond81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имется таблица - дерево Групп.
Листу дерева подчинена отдельная таблица с числовыми полями.

Группы - Подгруппы- Подподгруппы - ... - Отдельные части (с числовыми полями_ Цена, Кол-во, Стоимость)

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

Т.е. ГруппаСтоимость = Сумма (ГруппаСтоимость всех подгрупп или отдельных частей, если подгруппы отсутствуют)

Ясно, что без рекурсии тут не обойтись.

Возникает дилемма из классики программирования:

1) хранить вычисленные агрегатные суммы в таблице Группы (ГруппаСтоимость) - но при обновлениях гемморой с каскадными обновлениями вверх по иерархии.

2) Перевычислять каждый раз рекурсивным спуском

Что выбрать?

База MySQL. Веб-приложение.
...
Рейтинг: 0 / 0
Вложенные иерархии: вычислять или хранить?
    #35449322
jbond81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение посередине:

вычисляемые значения хранить только для таблицы отдельных частей - там формулы идут.

Это делается в одном месте при сохранении записи.

Для подгрупп - рекусивный спуск с рекурсией каждый раз при формировании отчета.
...
Рейтинг: 0 / 0
Вложенные иерархии: вычислять или хранить?
    #35449946
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jbond812) Перевычислять каждый раз
Именно так, причем способ зависит от генератора отчетов. Например ексель все сам сделает.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вложенные иерархии: вычислять или хранить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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