Вы на правильном пути. Есть небольшая экономическая выгода. Другими соображениями являются техническое обслуживание и сложность.
Сложность : Любая динамическая иерархия будет более сложной, чем статическая. Это включает в себя больше кодирования, тестирования, потому что есть еще много возможных случаев сбоя. Если у вас нет необходимости обновлять иерархию, возможно, сложность не стоит того? Мы часто чрезмерно оптимизируемся в сторону сложности, потому что ожидаем изменений в далеком будущем. Что приводит меня к обслуживанию ...
Обслуживание : Подумайте о сценарии использования для изменения вашей иерархии. Какое внешнее событие вызовет необходимость поддерживать иерархию, и кто будет человеком, обеспечивающим это? Нужно ли сохранять эти изменения, проверять, проверять их версии, утверждать, ставить и т. Д.? Системы контроля версий предоставляют множество этих функций.
Так, например, если иерархия представляет бизнес-единицы компании, а ваш сценарий использования является корпоративным слиянием в далеком будущем, то было бы разумно предположить, что программисты могут обновить статическую иерархию в системе управления персоналом , Фактически, в результате слияния, возможно, вся система может быть выброшена (!).
С другой стороны, если иерархия представляет собой каталог продуктов, мы все знаем, что маркетологи регулярно реорганизуют и уточняют эти данные. И, кроме того, если им скажут, что будет двухнедельный программный проект для перекодирования, тестирования и повторного развертывания каталога каждый квартал, я уверен, что они не будут довольны дизайном. Таким образом, динамическая модель, управляемая БД, имеет смысл.