Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Drzewiasta struktura oraz INDEX na pole typu TEXT
Sajrox
post
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:
  1. SELECT * FROM categories WHERE path_up LIKE '1.2.3.%'


Dla kategorii Monitory:
  1. SELECT * FROM categories WHERE path_up LIKE '1.2.%'


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
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 21.08.2025 - 02:31