Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql]wyszukiwanie po dodatkowych wartościach
Forum PHP.pl > Forum > PHP
zimi
Zastanawiam się nad pewnym problemem, który przedstawia się następująco
załóżmy że piszemy sklep internetowy, mamy kategorie oraz produkty, przy czym wiemy że produkty znajdujące się w danej kategorii mają specyficzne dla swojej kategorii cechy, na tyle ważne dla nas że chcemy je przeszukiwać pod tym kątem...

Moje pytanie jak zorganizować tabele i kod aby można było dość wygodnie i wydajnie obsłużyć przeszukiwanie produktów pod kątem tych danych specyficznych dla danej kategorii? uwzględniając że pole może być ciągiem znaków liczbą, datą, wartością logiczną...

przykłady takich rozwiązań można spotkać np. na allegro.pl, komputronik.pl

Staram się również uwzględnić potrzebę wypisania najważniejszych cech produktów różnych kategorii w widoku zbiorowym produktów

Gdzie dla danej kategorii oznaczamy co uznajemy za ważne...

Mogłoby to zatem wyglądać tak:
Kod
Sport: Piłka nożna Nike
Opis piłki

Cechy: Rozmiar: 5, materiał: .....................

Komputery: Laptop Dell
Opis komputera

Cechy: Procesor: Core 2 Duo, RAM: 4 GB ....

Co o tym myślicie?
mathijas
Podporządkowanie cech produktów kategoriom wydaje mi się krokiem w złą stronę. A to z kilku względów, przede wszystkim wymuszasz bardzo sztywny, bardzo przemyślany układ kategorii (nie pozwalasz na przykład na kategorię "różne inne śmieci"). Druga sprawa to przeniesienie produktu do innej kategorii - jak to obsłużysz? Trzecia sprawa - relację produkty-cechy-kategorie odtwarzasz najczęściej na stronie gdzie może być wiele hitów, lepiej to zepchnąć na panel, gdzie o ile nie robisz masowego wprowadzania produktów, będzie raczej niezauważalna.

Proponuję raczej podpiąć cechy produktów pod produkty. Najtrudniejsze JOINy będą się wykonywały tylko w panelu administracyjnym w widoku dodawania lub edycji produktu (formularz wyboru wszystkich dostępnych cech w danej kategorii budowany na podstawie istniejących w tej kategorii produktów i ich list cech) więc dość rzadko. Na stronie zaś najprostsza wersja relacji wiele-do-wiele załatwi sprawę.

Co do typu wartości cechy... Nie wiem czy rozbudowanie systemu o taką funkcjonalność będzie wydajniejsze od zastosowania przeszukiwania stringów. Ja bym zostawił stringi i dopiero kiedy będzie nóż na gardle w poszukiwaniu oszczędności na czasie wykonania starał się to jakoś zamienić. Nie widzę raczej możliwości zrobienia tego albo na kilku różnych kolumnach (i wtedy będzie niewygodnie) albo na kilku różnych tabelach (i wtedy będzie równie niewygodnie a w dodatku wolno).

Pozdrawiam
krowal
Reasumując, oto przykładowy schemat tabel smile.gif
Kod
grupa_produktow:
 id
 name

produkt_grupa:
 grupa_id
 produkt_id

produkt:
 id
 
grupy_cech:
 id
 name
 
cecha:
 id_grupy
 name
 value
 
produkt_cecha:
 produkt_id
 cecha_id


Czy wartościami będą integery czy varchary czy text to już zależy od Ciebie i od potrzeb aplikacji. Przy takim rozwiązaniu nie musisz się martwić o to jakie cechy są w danej kategorii i do jakiej grupy należy produkt... grupy produktów i cechy produktów powinny być niezależne od siebie. Generalnie, tak to się robi smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.