PHP klase / Nested Set Db Table

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 omogućava rad sa podacima u bazi, organizovanim po Nested set modelu. Ova klasa je apstrakna i njen API nudi metode koje olakšavaju rad sa tabelom koja ima hijerarhijski organizovane podatke, a to su:

  • getTree() - omogućava dohvatanje celog "stabla", uključujući i informaciju o dubini svakog unosa u tabeli,
  • insert() - metod za unos novog reda u tabelu, pri čemu je moguće definisati na kojoj poziciji u hijerarhiji će se nalaziti taj red,
  • updateNode() - metod za ažuriranje informacija koje se tiču pozicije u hijerarhiji nekog unosa,
  • deleteNode() - metod za brisanje unosa, koji omogućava brisanje samo jednog reda ili i svih onih kojima je red koji se briše nadređen u hijerarhiji (rekurzivno brisanje)

Klasa NestedSetDbTable_Abstract bi trebala da se koristi na način da se iz nje izvede neka druga klasa, pri čemu bi se redefinisanjem postavili određeni parametri tabele u bazi sa kojom namerava da se radi (njeno ime, primarni ključ, imena "left" i "right" kolona), nakon čega bi instanca tako izvedene klase predstavljala kompletan interfejs za rad sa tom tabelom. Za rad ove klase potrebno je podesiti i PDO adapter koji će se koristiti za komunikaciju sa bazom.

Download Nested Set Db Table 2.0
Broj preuzimanja: 1021

Pošaljite komentar: