rolisz's site

Stocarea de arbori în baze de date relaționale

Destul de des se întâmplă ca să trebuiască să stocăm informații aflate sub formă de arbori (ex. posturi de pe un forum) într-o bază de date. Problema este că ma­jori­tatea bazelor de date sunt liniare și trebuie să trans­for­măm in­for­mați­ile noastre într-o variantă liniară.

Să considerăm că avem următorul arbore cu uti­liza­tori, grupați în diferite categorii:

O metodă naivă de stocare ar fi să stocăm lângă fiecare nod și părintele său. Astfel, în tabelul users am avea:


id user parent


Problema este că pentru a obține arborele din baza de date, trebuie să apelăm recursiv un query către baza de date, ceea ce nu îi bine deoarece unul din continue.