Нет, это совсем не плохой дизайн. По крайней мере, по моему мнению.
Однако я бы реализовал только один. Например, я использовал Модель Списка Смежности в качестве основного метода добавления новых элементов и получения ... (очевидно, получение с тех пор, как это так просто), однако я также добавил parentIds для Nested Set.
Преимущество этого состоит в том, что я могу перестроить свой ALM в любое время и легко перемещать вещи, если я сохраню parentIds.
Я бы не использовал в вашем коде, однако, просто он был там в фоновом режиме ...
Отредактированные комментарии
Вы упоминаете, что не так просто выбрать непосредственных детей. Я думаю, что вы делаете что-то не так. Даже в Списке Смежности чрезвычайно легко выбрать ближайших детей.
Если вы создадите новый вопрос, я отвечу, как это сделать.