Re: trees in MySQL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If you don't know how many nodes you're going to have and the amount of
branches under each node, then that's the only way to do it.

However, if you can define those numbers, you can use something like the
following. A manager would have 50 numbers, for example. So, rather than
counting through the tree to determine left and right pairs, the first
manager simply has left:1 and right:51. Now, a section leader (SL) under him
has 10 numbers (so a manager can have 5 section leaders). The first section
manager would have 2 - 11, the second 12 - 21, etc. Now each section leader
can have an employee (E) that gets an adjacent left and right pair (so they
are a "leaf" with nothing under them).

Something like this, hopefully the formatting remains.

    Manager
    1        50
          |
     /        \
SL         SL
2  11    12-21
   |             |
  /   \         E
E      E  13-14
3-4 5-6

So if you count around the tree, you see it still goes in order, but it
leaves holes where you can "fill" people in.

So, if you can assign specific limits like that, to add a new section leader
under this manager, you simply select the largest "right" number for the
current section leaders, which will be 21, and add 10 to that, so the "new"
section leader would have numbers 22-31.

          Manager
          1        50
                |
          /         \
  /             |            \
SL          SL         SL
2  11    12  21   22  31
   |             |
/     \         E
E    E    13-14
3-4 5-6

That's probably confusing, but it works on paper for well defined trees. I
can explain in more detail if you're interested, but I don't know if it
applies to your situation or not.

---John Holmes...

----- Original Message -----
From: "José Moreira" <jmoreira@e-terno.net>
To: "Php-Db (Correio electrónico)" <php-db@lists.php.net>
Sent: Thursday, December 19, 2002 11:45 AM
Subject:  trees in MySQL


> hello im implementing a portal and im choosing between the 'Nested Set'
and
> 'Adjacency Lists tree' models.
> <http://users.starpower.net/rjhalljr/Serve/MySQL/traer.html>
>
>
> im perfectly aware of the 'Adjacency Lists tree' model how-to and I am
> studying the 'Nested Set', example follows :
>
> CREATE TABLE LanguageTree (
>
>   Language VARCHAR(255) PRIMARY KEY
> , Parent VARCHAR(255)
> , Lft LONG
> , Rgt LONG
> , INDEX idxLft (Lft)
> , INDEX idxRgt (Rgt)
> ) Comment = "Related languages";
>
>
>     A[1 12]
>   /          \
> /   \
>     B[2 3]       C[4 11]
>    /          \
>   /            \
>   D[5 8]     F[9 10]
>      |
>   E[6 7]
>
>
> my doubt is that if i want to insert a new node, for example 'G' under 'A'
>
>     A[1 12]
>   /     |     \
> /          \
>     B[2 3]    G[]   C[4 11]
>    /             \
>   /               \
>   D[5 8]         F[9 10]
>      |
>   E[6 7]
>
>
> i have? to update almost every left,righ fields after that node, resulting
> in a website performance downgrade ....
>
>
> help? even if thjats the only way, how can i do it? perhaps im getting it
> wrong ...
>
>
> best regards
>
>
> José Moreira
> TEGOPI S.A.
> http://www.tegopi.pt
>
>
>
>
>
>
>
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux