2012-03-19 10 views
7

Wdrażam drzewo MLM dla witryny za pomocą PHP (CodeIgniter) i MySQL. Potrzebuję implementacji drzewa binarnego w bazie danych. Poniżej lista rzeczy, które należy uwzględnić:Drzewo binarne za pomocą PHP + MySQL

  1. Dla każdego węzła, minimum liczby dzieci/węzłów w lewym poddrzewie oraz liczby dzieci/węzły w prawym poddrzewie nazywa się para. Dla każdej pary jeden węzeł otrzymuje 1 punkt - który powinien być przechowywany w bazie danych (węzły reprezentują użytkowników).

  2. Gdy nowy węzeł jest tworzony (gdziekolwiek), możliwe jest, że liczba wielu węzłów jest zwiększana. Tak więc zawsze, gdy tworzony jest węzeł, punkt węzła powinien być aktualizowany (zwiększany o jeden, jeśli ma zastosowanie).

  3. Muszę również skonstruować (wyświetlić na stronie) drzewo. Wyświetlane będą tylko 4-5 poziomów.

  4. Baza danych może mieć 100000 węzłów

znalazłem głównie 4 modele dla implemmenting dane hieararchical w MySQL, PHP

  1. lista sąsiedztwa
  2. Ścieżka wyliczenie
  3. Zestawy zagnieżdżone
  4. Stół zamykający

Chciałbym więc znaleźć rozwiązanie, które zmniejszy obciążenie narzutu i pomyślnie zaktualizuje punkty dla wszystkich odpowiednich węzłów.

Próbowałem rozwiązania listy przyległości.

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

każdorazowo jeden węzeł jest włożona, idę w górę i zachować inkrementacji dziecko liczy .Jeżeli nowa para jest potem zwiększamy że również i zwiększamy temperaturę .. robie to z procedur przechowywanych.

Powodem, dla którego wybrałem to rozwiązanie w zestawie zagnieżdżonym jest: dla każdego wstawionego węzła, liczba węzłów, które mają być aktualizowane dla zestawu zagnieżdżonego, jest zawsze większa niż lista sąsiednich.

Chociaż tempo budowy drzewa to więcej niż wstawianie. A zestaw zagnieżdżony jest lepszy w konstruowaniu drzew ..

Czy jestem we właściwym kierunku? Proszę pomóż !

Thnx z góry!

+0

nie może zrozumieć, dlaczego ten został downvoted, wydaje się całkiem rozsądne pytanie! +1 – dmp

+0

thnx danp, czy możesz mi pomóc z rozwiązaniem? –

+0

Jestem w trakcie implementacji hierarchii tabeli zamknięcia w kodzie kodów, czy warto zobaczyć ten kod? – dmp

Odpowiedz

1

Ten blog może pomóc managing hierarchy data

jednej brzmi najbardziej znane swoje pytanie jest ewentualnie Modified Preorder Tree Traversal

+0

Thnx Philip za odpowiedź. Rzeczywiście przeczytałem oba artykuły przed zadaniem tego pytania. Nie mogę zdecydować, które rozwiązanie należy zastosować ..... Zestaw zagnieżdżony wydaje mi się lepszy, chociaż obawiam się, że ma on wyższy narzut. –