Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Najbardziej optymalne pobranie drzewa kategorii
camikazee
post 4.04.2011, 14:53:19
Post #1





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 17.04.2006
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Witam!

Buduję system w którym jest ok 600 kategorii. Maksymalne zagnieżdżenie jest potrójne. Załóżmy kategoria A ma dzieciaka B, a ten dzieciaka C. Wywołujemy kategorię C i chcę wyświetlić całą gałąź w pasku nawigatora czyli np A:B:C. Zwykle wrzucałem w postaci tablicy do pliku (na zasadzie cache) drzewo kategorii i funkcjami rekurencyjnymi wyciągałem to co mnie interesowało. Jednak zastanawiam się jakie rozwiązanie jest tu najbardziej optymalne.
Jak Wy rozwiązujecie takie przypadki?


--------------------
www.fachoweuslugi.pl | www.zlec-usluge.pl | www.pokazsie.pl
Go to the top of the page
+Quote Post
Crozin
post 4.04.2011, 14:58:36
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


W tym konkretnym przypadku (tj. wyświetlania wszystkich gałęzi od korzenia do liścia) model nested set jest jednym z wygodniejszych.
Go to the top of the page
+Quote Post
camikazee
post 6.04.2011, 07:59:30
Post #3





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 17.04.2006
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Tak, tylko ja już korzystam z metody wykorzystującej parent id i depth. Większe serwisy jak allegro i pokrewne, często wyciągają całe drzewa kategorii, gałęzi itd. Dlatego zastanawiam, się czy bez super wydajnych komputerów można to zrobić w sposób optymalny, pomijając model "Nested set". Czy po prostu najlepiej cachować.


--------------------
www.fachoweuslugi.pl | www.zlec-usluge.pl | www.pokazsie.pl
Go to the top of the page
+Quote Post
lukaskolista
post 6.04.2011, 08:30:20
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Cytat
Tak, tylko ja już korzystam z metody wykorzystującej parent id i depth
A nested sets przy wyswietlaniu to niby z czego korzysta, jak nie z depth? Nested sets jest jak juz poprzednik wspomnial bardzo wygodnym rozwiazaniem, na poczatku sa z tym problemy, ale jak sie juz dojdzie do wprawy to jest git.
Go to the top of the page
+Quote Post
wiiir
post 6.04.2011, 08:44:17
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


nie wiem jak jest w mysql ale w oraclu mozna zrobic to jednym zapytaniem majac tylko id orazu masz tez level - jest to pseudokolumna

  1. SELECT level , id_rodzica FROM twoja_tabela t
  2. connect BY prior t.id = t.id_rodzica start WITH t.id = id_menu


moze znajdziesz cos na wzor tego
Go to the top of the page
+Quote Post
camikazee
post 6.04.2011, 11:33:34
Post #6





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 17.04.2006
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Jestem tak zakręcony, że zapomniałem o kolumnie, którą jeszcze dodałem root, która zawiera id głównej kategorii. I według niej wyjmę i szybko posortuje.


--------------------
www.fachoweuslugi.pl | www.zlec-usluge.pl | www.pokazsie.pl
Go to the top of the page
+Quote Post
JoShiMa
post 6.04.2011, 19:35:40
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(lukaskolista @ 6.04.2011, 08:30:20 ) *
A nested sets przy wyswietlaniu to niby z czego korzysta, jak nie z depth?

Wcale nie ma konieczności trzymania takiej kolumny w bazie w przypadku drzewa typu nested set depth liczy się w zapytaniu i to żadna filozofia. Polecam coś nieco na ten temat.



--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:48