Sada ne znam jesam dobro razumio pitanje, ali koliko kuzim trebas napraviti neku hijerarhiju. Netko je dao link na model ugnijezdjenoga skupa (nested sed model), a ja cu ovdje objasniti kako se stablo pravi pomocu popisa modela susjedstva (eng. . Adjacency list model). Tj. opisat cu samo kreiranje stabla pomocu popisa modela susjedstva. Imas ovo jako dobro objasnjeno u knjizi Joe Celko's Sql for Smarties, a ima i knjiga samo o stablima. Kako ovdje nije dopusten piratluk ne mogu je staviti. PM-aj za dodatne informacije o knjizi ako hoces.
Dakle imamo neko stablo recimo ovo
http://en.wikipedia.org/wiki/Image:Binary_tree.svg
dijete otac
=============
'2' NULL
'7' '2'
'5' '2'
'2' '7'
'6' '7'
'5' '6'
'11' '6'
'9' '5'
'4' '9'
Opsirnije ovdje
http://en.wikipedia.org/wiki/Adjacency_list
Ovo se moze napisat pomocu matrice susjedstva, ali meni se ne da tipkat. =)
Dakle pravljenje tablice
CREATE TABLE Stablo_susjedstva
(child CHAR(2) NOT NULL,
parent CHAR(2), -- null is korijen
PRIMARY KEY (child, parent));
Kod je iz gore navedene knjige ili mu ja barem slican =)
Ogranicenja su da ima samo jedan korijen.
CREATE TABLE
(child CHAR(2) NOT NULL,
parent CHAR(2), -- null is root
PRIMARY KEY (child, parent),
CONSTRAINT jedan_korijen
CHECK((SELECT COUNT(*)
FROM AdjTree
WHERE parent IS NULL) = 1)
...);
nema kruzenja etc...
Obilasci bi islo ovako:
SELECT P1.child, ' je roditelj ', C1.child
FROM Stablo_susjedstva AS P1, Stablo_susjedstva AS C1
WHERE P1.child = C1.parent;
etc... etc...
Uglavnom ona knjiga je ono sto ti treba ako nisam u krivu. =)