![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałbym podyskutować o pewnym rozwiązaniu dotyczącym tworzenia drzewka kategorii. Otóż mam przykladowe drzewo kategorii Komputery(id: 1) -> Monitory(id: 2) -> -> Lcd (id: 3) -> -> -> 24 cale (id: 4) W bazie mam pola ID | PARENT_ID | NAME | PATH_UP | DEPTH Pole PATH_UP trzyma identyfikatory kategorii w górę (odzielone kropką), czyli np kategoria "Lcd" będzie miała w tym polu: "1.2.3" Kiedy będę chciał znaleść wszystkie kategorie na niższym poziomie, tworze zapytanie:
Dla kategorii Monitory:
Pytanie czy LIKE w tym wypadku będzie efektywny i wydajny ? Pole path_up jest typu TEXT i posiada nałozony index. I ogólnie czy takie rozwiązanie jest wydajne i sensowne? EDIT: Jednak na TEXT nie można załozyć indexu wiec zmieniłem typ na VARCHAR(1000) i widze że indeks działa. Jednak dalej mam pytanie czy trakie rozwiazanie drzewa jest dobre według Was? Myślę też by dla identyfikatorów któe podaję po kropce w polu parh_up stworzyć osobną tabelę i tak trzymać polaczenia jeden do wielu (CATEGORIES_ID | CATEGORIES_ID_UP) czyli dla naszej kategorii LCD wynik będzie wyglądał tak: CATEGORIES_ID | CATEGORIES_ID_UP 3 | 1 3 | 2 Kategoria LCD: CATEGORIES_ID | CATEGORIES_ID_UP 4 | 1 4 | 2 4 | 3 Ten post edytował Sajrox 18.12.2009, 14:24:23 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 02:31 |