![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję wydajnego i niezbyt skomplikowanego sposobu na szybkie pobieranie danych o kategoriach - takiego, aby zmiana struktury kategorii nie była skomplikowana.
Aktualne rozwiązanie Ważne pola w tabeli: ID | nazwa | wyższa kategoria + bardzo szybkie wyszukiwanie kategorii niższego poziomu i wyższego o 1 poziom + nieskomplikowana struktura (przy zmianach nie trzeba wykonywać innych czynności) Rozwiązania problemów:
Ciekawa metoda, jednak prawdopodobnie nie da się pobrać wyższych kategorii przy pomocy 1 prostego zapytania do bazy. Doskonale się jednak sprawdza przy pobieraniu podkategorii. Powiązania - metoda Depesza Również ciekawe rozwiązanie - przy małej ilości poziomów rozmiar drugiej tabeli nie powinien urosnąć do kosmicznych rozmiarów. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Niestety, więcej problemów jest przy zmianie struktury. Aby zmienić nadkategorię kategorii środkowego poziomu, zmiana powiązań dla child_id=ID to za mało - również należy wykonać tą czynność dla podkategorii (ale można je pobrać za 1 zapytaniem i z PHP złożyć kwerendę modyfikującą).
Jeżeli kategoria ma subkategorię o ID 8, jej indeks to: 008.001 (ostatni człon to numer kolejności) bądź 008. + bezproblemowe i szybkie sortowanie i grupowanie kategorii Pobieranie podkategorii i nadkategorii jest możliwe, lecz wymaga użycia operatora LIKE lub specjalnej funkcji, więc prawdopodobnie nie jest tak szybkie. Podobnie wykonywanie operacji (ad. 5.) opera się na tej samej zasadzie. Zmiana struktury może być kłopotliwa (ale nie musi) - trzeba pozamieniać podkategoriom indeksy. Które z tych rozwiązań najlepiej nadaje się do podanych wyżej celów i nie jest uciążliwe przy modyfikacji struktury? (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) Wymieńmy się doświadczeniami. Ten post edytował WebCM 15.07.2007, 11:58:29 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 5 Dołączył: 18.07.2006 Skąd: Piekary Śląskie Ostrzeżenie: (0%) ![]() ![]() |
Ja też używam nested tree. Łatwo można na tym zrealizować wszystko co może być do szczęścia potrzebne. Znalazłem tylko jeden problem.
Na stronie http://www.phpriot.com/d/articles/php/appl...es-1/index.html jest opis algorytmu nested tree i aby wyświetlić cale drzewo to wykonujemy zapytanie select * from tabela order by nleft. Problem polega na tym, że nie mamy tutaj mozliwości wpływania na kolejność kategorii. Nie możemy raz wyświetlać elementów posortowanych po nazwie a raz po jakiejś ustalonej przez usera kolumnie. Dla każdej opcji sortowania trzeba by mieć osobne pola nleft i nright. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 22:57 |