В Nested Sets я не понимаю как динамически обновлять дерево. То-есть добавили новый элемент, и дальше что, какой алгоритм действий.а мы и отвечаем либо на глупые вопросы либо на умные, на умный ответили, давай уже глупые
гляну...если ты ручками хочешь, вот все основные команды https://github.com/riquito/Baobab/blob/master/src/sql/schema_baobab.sql
яб в этом виде не брал бы, там чтото с множеством деревьев мутное. только для изучения
ну да, так как у меня млм, нужно вставить, пересчитать дерево и решать, что с ним делать, переводить человека на сл. уровень или ждать еще людей. Я при переводе на сл. уровень снова проверка. Ну тут опять же, без рекурсии никуда.Nested set model practical examples, part I.
Every developer will sooner or later solve a situation how to store hierarchical data (parent – child relation) in relational database. As there is a lot ...www.we-rc.com
Вставка в nested sets дорогая - надо обновлять все дерево. Зато выборка поддерева элементарная, никаких рекурсий, простейший запрос.
И то и другое дешево - так не бывает.
Вообще была такая книга Trees in SQL by Joe Celko, там рассмотрены все возможные варианты, их плюсы и минусы.
Который у меня, или описать механизм логики проекта?А опиши подробно алгоритм словами (бизнес-логику, не думая над конкретными реализациями операций вставки или выборки). У меня есть идея, но я не уверен, что подойдет )
МЛМ проект, матричная структура. Под каждым человек два партнера в первой линии, и четыре во второй. При закрытие второй линии, то есть когда там четыре человека, верхнего перекидывает на второй уровень и так далее хоть до бесконечности.второе
Это что?с дополнительной денормализацией capacity + usage?
там всего 3 уровня, можно self join и на его структуре это будет работать как ракета,Под каждым человек два партнера в первой линии, и четыре во второй.
хм, я так понял что уровней сколько угодно.там всего 3 уровня, можно self join и на его структуре это будет работать как ракета,
Это для перехода на уровень 2 например нужно заполнить две линии, два человека и четыре. А линий под конкретным человеком может быть бесконечно много и все эти линии пройти нужно и найти свободного. Ну грубо говоря пирамидальная система и каждый раз, нужно ставить кирпичик сверху внизтам всего 3 уровня, можно self join и на его структуре это будет работать как ракета,
Кстати, падить нулями не нужно, точка-разделитель прекрасно работает.В каждом узле хранить полный путь к нему, типа 1->3->4 = path "000000010000000300000004"
тут паддинг для глубины же нужен.Кстати, падить нулями не нужно, точка-разделитель прекрасно работает.
тут паддинг для глубины же нужен.
select LENGTH("1.2.23.44.56") - LENGTH(REPLACE("1.2.23.44.56", ".", ''))