![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Piszę ten temat bo ogarnęła mnie już całkowita niemoc. Próbuję zaimplementować jakiś sensowny algorytm drzewek do mojego CMFa. Nie chcę korzystać z Nested Sets (left, right), bo to kompletnie nie nadaje się do większych drzew. Znalazłem coś takiego: http://fungus.teststation.com/%7Ejon/treeh...reeHandling.htm Metoda bardzo fajna, ale utknąłem na jednej bardzo istotnej rzeczy - wyświetlaniu drzewa. Teoretycznie, zgodnie z tym co piszą w artykule, by pobrać drzewo (lub daną część drzewa) wystarczy użyć zapytania: Select Id from Path where AncestorId = 2 Przypuśćmy, że drzewo wygląda tak: Kod rośliny (1) / \ / \ / \ / \ owoce(2) warzywa(3) / / banan(4) (gdzie cyfry w nawiasach to numery ID elementów -- 'banan' został dodany później niż 'warzywa'). W tym wypadku, używając powyższego zapytania dostanę: Kod Rośliny Owoce Warzywa Banan Czy jest jakiś sensowny sposób, by pobrać odpowiednio posortowane drzewo korzystając z powyższego przykładu? A może znacie jakieś inne efektywne sposoby przechowywania drzew w bazie danych? Zależy mi przede wszystkim na efektywności i elastyczności. Nested Sets odpadają (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Levabul @ 2006-01-17 21:58:50) Nie rozumiem trochę zastosowań drzewa. Jak w jednej tabeli można przechowywać zarówno newsy, jak i artykuły i bóg wie co jeszcze ? Przecież każdy z tych przykładów potrzebuje innych danych. Newsy od artykułów, postów i komentarzy nie różnią się w brew pozorom, aż tak wieloma elementami. Każdy ma tytuł, treść, date dodania, autora itd. Osobiscie nie zdecydowalbym sie na trzymanie artow, newsow i postow w jednej tabeli, ale na przyklad tematy forum i posty jak najbardziej. Nie widze przeciwskazan do tego by zbudowac system newsow z podzialem na kategorie i komentarze i wszystko to trzymac w jednej tabeli. Ja tam widze wiele zastosowan dla struktur drzewiastych np. artykuły - jak masz prosciutkie teksty to wrzucasz je jako pojedynczy artykuly, ale jakbys chcial opublikowac wieksza prace to podzial na rozdzialy, podrozdzialy, punkty przywoluje automatycznie na mysl strukture drzewiasta. Czym ze jest menu (mowa oczywiscie o bardziej rozbudowanym menu) jak nie struktura drzewiasta? Cytat(Levabul @ 2006-01-17 21:58:50) Można by wprawdzie w drzewie dodać pole table mówiąze w jakiej tabeli znajduje się dany news, artykuł itp., ale mija się to z ideą drzewa :/ A dlaczego nie. Tabela z drzewem przechowuje jedynie najwazniejsze informacje wspolne dla wszystkich elementow drzewa, a pozostale informacje przechowywane sa juz w innych tabelach. Najczesciej bedziesz sie do nich odwolywal wybierajac konkretny element bo do przedstawienia drzewa zaleznosci calkowicie wystarcza informacje wspolne takie jak tytul.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 09:17 |