![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 1 Dołączył: 9.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Reasumując, oto przykładowy schemat tabel (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował krowal 2.03.2009, 11:17:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 17:11 |