Biztos sokan szerettünk már például termék kategóriákat eltárolni jól lekövethető és gyorsan kikérdezhető módon. Egy hasznos konvertert mutatunk be mely a hagyományos fa szerkezetű adattárolást átalakítja olyan formátumra, hogy a kikérdezést rekurzó nélkül megoldhassuk, ezzel jelentős erőforrásokat megspórolva az adatbázis szervernek.
Hagyományosan a legtöbben a következő táblaszerkezetet használjá fa szerkezetek tárolására:
id
name
parent_id
created
1
Kateg1
0
dátum
2
Kateg2
1
dátum
3
Kateg3
3
dátum
Ebből látható, hogy a parent_id mező hivatkozik mindig a szülő rekordra. Ez mind szép és jó, mind ameddig kevés adatunk van a táblában, ugyanis gyorsan végig tudja pörgetni a mysql általában a rekurzív függvényünket, mely a példánkban is látható. Azonban amint több ezer sorunk van a táblában, tehát egy jó nagy webshopot akarunk felépíteni például, akkor erősen gondolkodunk kell az optimalizáláson. Ehhez nem kell mást tennünk, mint még két oszlopot hozzácsapni az eredeti táblázatunkhoz, például lft és rght néven.
id
name
parent_id
lft
rght
created
1
Kateg1
0
1
6
dátum
2
Kateg2
1
2
5
dátum
3
Kateg3
3
3
4
dátum
A két mező fogja meghatározni, hogy egyes kategóriába mennyi alkategória van, és sokkal egyszerűbb lesz a lekérdezésünk is. Azonban most ebbe nem megyek bele, az eddig legjobb cikk az alábbi linken olvasható angol nyelven, mely ezt a témát boncolgatja emberi nyelven.
Most lássuk akódunkat, mely az eredeti táblánkat átalakítja:
function rebuild_tree($parent, $left)
{
$right = $left + 1;
$result = mysql_query('SELECT parent_id, id FROM studio_webshop_categories WHERE parent_id = "'.$parent.'";');
while ($row = mysql_fetch_array($result))
{
$right = rebuild_tree($row['id'], $right);
}
mysql_query('UPDATE studio_webshop_categories SET lft = '.$left.', rght = '.$right.' WHERE id = "'.$parent.'";');
return $right+1;
}
rebuild_tree(0, 1) ; //kiadjuk a parancsot a fa újraépítésére
Cégünk által készített weblapokat eddig ennyien látták:
45 283 871
ebből a mai napon 26 888 látogató volt
Miért a TotalStudio?
Nálunk Ön az első Az Ön elképzelései és a mi kreativitásunk illetve szaktudásunk a garancia arra, hogy honlapja vagy grafikai megjelenése olyan legyen amilyenre mindig is vágyott.
Több éves tapasztalat Cégünk munkatársai több mint kilenc éve foglalkoznak webfejlesztéssel, informatikával és szerverüzemeltetéssel, ezen idő alatt mindenre felkészültünk!
Verhetetlen minőség Munkánkban nem ismerünk kompromisszumot! Mindig a legmagasabb minőségre törekszünk. A magunkkal szemben támasztott maximalizmus és a legújabb technológiák használata garantálja, ügyfeleink elégedettségét.
Gyorsaság és megbízhatóság Nálunk nem kell heteket várni, hiszen honlapja akár öt munkanapon belül is elkészülhet a szerződés aláírásától, de a gyorsaság soha nem megy a minőség rovására!