RE: MySQL/PHP Iterative Tree

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

 



> > You may want to check out using Nested Sets instead of a
Parent-Child-ID
> > system.
> 
> This is OK for some simple trees, however it does have some
limitations.
> 
> (1) Adding another tree / series of nodes into the middle if the set.

Not if you can define what the absolute max size of a node will be. I've
been looking to using this for the military, to represent the chain of
command. The structure of the military would be like this:

1)Army, 2)Corp, 3)Division, 4)Brigade, 5)Battalion, 6)Company,
7)Platoon, 8)Squad, 9)Individual

So I define a squad to have 50 "elements", a platoon to have 10 squads,
a company to have 10 platoons. Normally, these would have a lot less
than that, but I've built in some extra space. So if I create a company,
it gets node number of 6-5006. (Company is number 6 above, this allows
you to add nodes above this one, also, that contain this one) So it has
5000 spaces in it. The first platoon would have node number of 7-507.
First squad has 8-58. So to add in another platoon, simply select the
max number under the company you want to add it to. In this case, it
would be 507. So, even with data already there, the next platoon added
would have node number of 508-1008. You can still do all of the regular
nest set queries, too.

> (2) A child node that belongs to more than one parent.

Again, not really. In the above example, I give a certain company the
node numbers of 6-5006. Now assign that left and right pair a unique id.
Now you can have multiple people with that same ID. So you can have 3
managers at the same level, associated with the same unique id and left
right pair, and be in charge of the same people.

---John Holmes...



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