RE: trees in MySQL

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

 



thank you for your help,

the portal will (problably) use sort of a directory index where a node can
be a folder to go 'inside' or a

portlet like moduled application like a forum, or a partial download list
( depending on current node ).

knowing that the 'Adjacency Lists tree' and a bunch of tables would be more
easy to implement i believe the

'Nested Set', few tables ( the tree, users, permissions and a table for each
type of portlet,) and a buch of SQL statements

would be more eficient considering scalability ... correct me if im wrong :)

the first node levels will have just a few very slowly increasing branches
but the forum branch will be more dynamic

depending on site success.

perhaps the 5 or 10 seccions will be sufficientin these first levels and
could use a 1000 unit difference for the more

dinamic. perhaps using also a automated trigger PHP procedure to increase
the number of series when the difference becomes


low.


tree theory is very interesting and has much to offer in terms of knowledge
...





-----Mensagem original-----
De: 1LT John W. Holmes [mailto:holmes072000@charter.net]
Enviada: quinta-feira, 19 de Dezembro de 2002 17:08
Para: jmoreira@e-terno.net; Php-Db (Correio electrónico)
Assunto: Re:  trees in MySQL


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




-- 
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