Cytat(jmail @ 19.10.2009, 14:14:56 )

WHERE
produkt_tag = tag OR rodzic_tag = tag OR rodzic_rodzic_tag = tag i tak dalej
A nie odwrotnie?
WHERE
produkt_tag = tag OR dziecko_tag = tag OR dziecko_dziecko_tag = tag i tak dalej
Drzewo pobieram i wyświetlam od góry. Czyli powonieniem sprawdzać czy tag występuje u jakiegokolwiek dziecka? Czy można to jakoś zrobić bez rekurencji?
Bo pobieranie tagów dziecka i ich sprawdzanie, potem pobieranie tagów dziecka dziecka i ich sprawdzanie masakrycznie zwolni bazę. Jak to zrobić?
Cytat(vokiel @ 19.10.2009, 19:11:44 )

E). Wyszukując produkt po tagu, dla każdego odnalezionego musisz pobrać resztę ścieżki w górę, potem wyniki pogrupować od góry, od kategorii najszerszego znaczenia, do tej najzwięźlejszej.
Nie rozumiem. Myślałem, że będę pobierać drzewo od góry. Wtedy właśnie ten problem mi się pojawił z rodzicami nie mającymi tagu dzieci. Jakbym pobierał produkty spełniające tag to nie byłoby tego wcześniejszego problemu. Ale jak je później wyświetlić w postaci drzewa? Zupełnie nie wiem jak się za to zabrać.
Cytat(vokiel @ 19.10.2009, 19:11:44 )

D). Po co tyle tych drzew?
Wiem, że to jest głupie ale to nie mój pomysł i nie mogę go zmienić.
Cytat(vokiel @ 19.10.2009, 19:11:44 )

C-A). Aby dać sobie możliwość wyświetlenia breadcrumbs'ów musisz jakoś poinformować skrypt z której ścieżki (drzewa) ma korzystać. Bo w takim, że tak to ujmę mętliku sam się nie połapie. Jeśli produkt może podlegać pod ścieżkę producenta->kategorii->subkategorii, lub producenta->tagu, etc, to musisz jakoś przekazać do skryptu gdzie ma tego szukać. Albo możesz co najwyżej pobrać pierwszą pasującą opcję.
Już sobie z tym poradziłem

Cytat(vokiel @ 19.10.2009, 19:11:44 )

Czy nie możesz ograniczyć tego do drzewa kategorii a producenta umieścić jako jeden z atrybutów (właściwości) produktu?
Przynależność do kategorii może być różna, bo monitor lcd 22" może należeć do głównej kategorii monitory, subkategorii lcs, lub subkategorii 22", anyway producenta ma jednego.
Niestety nie mogę, bo podział w drzewie producentów ma być dokładnie taki jak an stronie danego producenta (każdy ma inny). Kolejny niefunkcjonalny bezsens

A tak przez ciekawość, jeśli mam kategorie nierozróżnialne od produktów to czy lepiej dopisywać producenta do tabeli z produktami (wtedy kategorie będą miały NULL w tej kolumnie), czy lepiej stworzyć osobną tabelę z producentami i tabele product-producer? A może wpisać producentów jako tagi? I tylko w dodatkowej tabeli trzymać samą listę producentów (żeby odróżnić od tagów)? Które rozwiązanie uważasz za lepsze?
Cytat(vokiel @ 19.10.2009, 19:11:44 )

Jak ja to widzę, właśnie jedno drzewo. Nie stracisz na funkcjonalności, bo nadal będziesz mógł utworzyć drzewko menu według producenta, po prostu stworzysz drzewko po drzewku dla każdego producenta. Tak samo z resztą funkcjonalności, które przedstawiłeś.
Też o tym myślałem, ale nie zależy to teraz ode mnie. Czy dobrze myślę, że wyświetlanie drzewa z podziałem na producentów trzeba byłoby wtedy zrobić tak jak wyświetlanie drzewa produktów posiadających jakiś tag?
Cytat(vokiel @ 19.10.2009, 19:11:44 )

Poza tym jest w bazach danych pojęcie redundancji danych. No i robiąc kilka drzewek ze względu na najbardziej ogólny podział łamiesz tą zasadę. Każdy produkt występuje tyle razy ile masz drzewek, pomimo, że jest to ten sam produkt. (chyba, że źle zrozumiałem Twój opis - popraw mnie jeśli się pomyliłem). Drzewka
mają być podobne, różnice marginalne. Wiem, bez sensu

Cytat(vokiel @ 19.10.2009, 19:11:44 )

W przypadku bazy opartej o drzewie większość działań będzie polegała na chodzeniu po drzewie w tą i z powrotem, niestety nie unikniesz tego.
Z chodzeniem po drzewie od góry do dołu jakoś sobie radzę. Ale w drugą stronę już nie. Jeśli możesz to napisz jak przechodzić po drzewie w górę i potem grupować wyniki, tak, żeby potem znowu otrzymać drzewo?
Zapomniałem się jeszcze zapytać, czy drzewo z bazy lepiej jest pobierać jednym zapytaniem, czy wieloma? Teraz pobieram wieloma zapytaniami. Po kolei wszystkie dzieci jakiegoś rodzica, potem dzieci dzieci. Czyli bardzo dużo pytań SELECT, między którymi wyświetlam listę nieuporządkowaną w html. Czy jeśli szybkość jest nadal na akceptowalnym poziomie, to warto zmienić tą moją metodę? Np pobrać tabelę z drzewem do PHP i później w samym PHP generować z niej odpowiednią strukturę drzewa? Byłoby dużo więcej roboty ale może warto?
pozdro