Я внедряю дерево MLM для веб-сайта с использованием PHP (CodeIgniter) и MySQL. Мне нужна реализация двоичного дерева в базе данных. Следует учитывать следующие вещи:
Для каждого узла минимальное количество детей / узлов в левом поддереве и количество дочерних узлов / узлов в правом поддереве называется парой. Для каждой пары один узел получает 1 пункт – который должен храниться в базе данных (узлы представляют пользователей)
Когда создается новый узел (где бы он ни был), возможно, что многие пары узлов увеличиваются. Поэтому всякий раз, когда создается узел, точка каждого узла должна быть обновлена (при необходимости увеличивается на 1)
другим ограничением является каждый день, когда любой узел не может иметь более 100 точек.
Мне также нужно построить (отобразить на веб-странице) дерево. Должно быть показано только 4-5 уровней.
В базе данных, вероятно, будет 100000 узлов
Я нашел в основном 4 модели для внедрения гериархических данных в MySQL, PHP
Поэтому я хотел бы найти решение, которое уменьшит накладные расходы и успешно обновит точки для всех применимых узлов.
Я попробовал решение списка смежности.
node ( id, parentid, leftChildId,rightChildId,leftCount,rightCount ) userStat(id,sdate,pairs,mlmIncome)
каждый раз, когда вставлен один узел, я иду вверх и продолжаю увеличивать количество дочерних элементов. Если новая пара выполнена, то я увеличиваю ее и увеличиваю ее. Я делаю это с хранимыми процедурами.
Причина, по которой я выбрал это решение по вложенному набору, – это: для каждого вставленного узла количество узлов, подлежащих обновлению для вложенного набора, всегда больше, чем список смежности.
Хотя скорость построения дерева больше, чем вставка. И вложенный набор лучше подходит для построения деревьев ..
Я в правильном направлении? Пожалуйста помоги !
Thnx в Advance!
Этот блог может помочь вам управлять данными иерархии
Тот, который звучит наиболее знакомым для вашего вопроса, возможно, изменен.