Većina web developer-a se bar jednom susretala sa potrebom da podatke u SQL bazi organizuje hijerarhijski. Ali problem je što tabele u relacionim bazama podataka nisu hijerarhijske, već obične liste. Imajući to u vidu, na programeru je da taj problem prevaziđe.
Postoji nekoliko rešenja za realizaciju ovakvog zahteva, od kojih se dva izdvajaju kao najbolja i najkorišćenija: Adjacency List model i Nested Set model. I jedan i drugi pristup imaju svojih prednosti i mana, a stvari otprilike stoje ovako… Kod Adjacency List modela, ažuriranje i unos nove stavke u hijerarhiju je kranje jednostavna, dok je dohvatanje podataka zakomplikovano i loše što se performansi tiče, uglavnom zbog činjenice da podaci moraju da se izvlače rekurzivno. Kod Nested Set modela stvar je suprotna, kod promena u hijerarhiji mora da se vodi računa o više stvari, a dohvatanje celog “drveta” je jako efikasno i može da se reši samo jednim upitom. Više o svemu ovome može pročitati na ovoj stranici, na kojoj je uporedni test ova dva modela. Iz naslova ove teksta vam je jasno koji model je moj izbor. 
Nested Set Db Table je klasa, odnosno set klasa, je namenjena radu sa podacima u bazi, organizovanim po Nested set modelu. Napravio sam dve verzije ove klase, prva, general verzija, se može koristiti u standardnim PHP aplikacijama, a druga je kreirana za projekte zasnovanim na Zend Framework-u, i predstavlja proširenje komponente Zend_Db_Table. Obe verzije klasa su apstrakne klase i predstavljaju API za rad sa tabelom koja ima hijerarhijski organizovane podatke. Klasa NestedSetDbTable bi trebala da se koristi na način da se iz nje izvede neka klasa, pri čemu bi se definisali određeni parametri tabele u bazi sa kojom namerava da se radi (njeno ime, primarni ključ, imena “left” i “right” kolona), nakon čega bi tako izvedena klasa predstavljala kompletan interfejs za rad sa tom tabelom. U standardnoj verziji je potrebno definisati i adapter koji će se koristiti za komunikaciju sa bazom. Da bih olakšao posao programerima koji budu koristili ovu moju klasu, napravio sam i podrazumevani DB adapter, koji utilizira PDO, kao i interfejs, kako bih ostavio programeru mogućnost da sam kreira neki svoj adapter za bazu.
Takođe, budući da sam ja veliki fan Zend Framework-a, a ovaj set klasa sadrži i verziju upravo za taj framework, napisao sam i članak o mojoj klasi na devzone.zend.com, i možete ga pogledati ovde.
