![]() |
![]() |
![]() ![]()
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: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Osobiście używam tylko nested tree (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ostatnią metodą jaką bym wybrał to coś w stylu bodowania stringu.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:26 |