Citat:
LazyDog: Moram da pitam, da li ce ovakav pristup zauzeti mnogo resursa, Zbog ovog konstantnog slanja upita?
Nije srecno resenje u svakom slucaju.
Jedna od mogucih optimizacija bi bila da se u jednom upitu dohvate redom sve veze, pa da se onda to "prepakuje" u strukuturu kakva vec odgovara za dalje procesiranje. Sad zavisi da li ce se uvek dohvatati celo stablo, ili mozda samo jedan mali njegov deo.
Prema nekom mom iskustvu, za pamcenje iole vecih stabala u relacionoj bazi, i za njihovo efikasno dohvatanje, neophodno je da svaki cvor pamti svoju putanju do root-a, u vidu jednog varchar polja.
Ideja je jednostavna, ako recimo imas putanju do root-a sledecu (gde su cetvorocifreni brojevi id-evi cvorova i to id-evi fiksne duzine)
0001|0002|0005|0007
Onda svi cvorovi podstabla tog cvora imaju taj prefiks, recimo
0001|0002|0005|0007|0008
0001|0002|0005|0007|0009
i sl.
I onda ih mozes dohvatati u jednom upitu.
Postoje dve male mane ovog pristupa. Jedna je da moras imati ogranicenje brojeva cvorova u stablu. Nebitno da li je to 10, 100 ili 100000, ali zbog fiksne duzine id-eva ogranicenje mora postojati.
Druga mana je da prilikom promene strukture stabla (dodavanje cvorova, brisanje cvorova, premestanje podstabala) moras lepo osmisliti upit koji ce azurirati sve putanje u cvorovima koji su "pogodjeni" to promenom. Nije komplikovano, ali je, da kazem, pipavo.