Двоичное дерево с использованием PHP + MySQL

Я реализую дерево MLM для веб-сайта, используя PHP (CodeIgniter) и MySQL. Мне нужна реализация бинарного дерева в базе данных. Необходимо учитывать следующее:

  1. Для каждого узла минимальное количество потомков/узлов в левом поддереве и количество потомков/узлов в правом поддереве называется парой. За каждую пару один узел получает 1 балл, который должен храниться в базе данных (узлы представляют пользователей)

  2. . Когда создается новый узел (где угодно), возможно, что многие из пары узлов увеличиваются. Таким образом, всякий раз, когда создается узел, каждая точка узла должна обновляться (увеличиваться на единицу, когда это применимо)

  3. . Другое ограничение заключается в том, что каждый день любой узел не может иметь более 100 точек.

  4. Мне также нужно построить (отобразить на веб-странице) дерево. Только 4-5 уровней должны быть показаны.

  5. База данных, вероятно, будет иметь 100000 узлов

Я нашел в основном 4 модели для реализации иерархических данных в MySQL, PHP

  1. Список смежности
  2. Перечисление пути
  3. Вложенные наборы
  4. Замыкающая таблица

Поэтому я хотел бы найти решение, которое уменьшит накладные расходы на вставку и успешно обновит точки для всех применимых узлов.

Я попробовал решение со списком смежности.

node ( id, parentid, leftChildId,rightChildId,leftCount,rightCount ) 
userStat(id,sdate,pairs,mlmIncome)

каждый раз, когда вставляется один узел, я иду вверх и продолжаю увеличивать количество дочерних узлов.Если создается новая пара, я также увеличиваю ее и увеличиваю точку. Я делаю это с помощью хранимых процедур.

Причина, по которой я выбрал это решение, а не вложенный набор, заключается в следующем: для каждого вставленного узла количество узлов, подлежащих обновлению для вложенного набора, всегда больше, чем список смежности.

Хотя скорость построения дерева больше, чем скорость вставки. И вложенный набор лучше подходит для построения деревьев..

Я в правильном направлении?? Пожалуйста помоги !

Заранее спасибо!

7
задан Shahed Khan 24 March 2012 в 09:30
поделиться