Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] Cechy produktów - propozycja struktury tabel
Sajrox
post 23.05.2010, 19:46:24
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam,

Jestem teraz na etapie tworzenia struktury tabel cech produktów:

Oto co wymyśliłem:


Krótkie wyjaśnienie tabel:
features_has_categories - łączy daną cechę z daną kategorią (aby przy danej kategorii były dostępne tylko określone cechy)
features - nazwy cech
features_defaults - zserializowana tablica z domyślnymi wartościami dla danej cechy (np. cecha kolor będzie miała tutaj listę kolorów które wyświetlą się w formie listy rozwijanej)
features_values - wartości danych cech (jedna wartość może należeć do kilku produktów, zawarte jest to w tabeli items_has_features_values). Tutaj są 2 rodzaje pola jeden jest dla typu sring drugi dla wartości typu int. Służy to szybszemu wyszukiwaniu danej cechy w bazie (w tym wypadku typu int)
items_has_features_values - mówi która wartośc należy do danego produktu, jedna wartość może być połączona z wieloma produktami (jeden do wielu)
features_units - jednostki dla danej cechy (np: dm, cd, m, km itp...)


Co o tym myślicie ? Troche może skomplikowane ale chce uniknąć powtarzania i ułatwić integracje z wyszukiwarką produktów.
Go to the top of the page
+Quote Post
croc
post 23.05.2010, 19:51:14
Post #2





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Nie podoba mi się pomysł serializacji w features_defaults.
Go to the top of the page
+Quote Post
Sajrox
post 23.05.2010, 19:59:29
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


W sumie nie ma sensu rozbijać tego na pojedyncze krotki. Z tego pola będę tylko korzystać w momencie wyświetlania listy wartości dla danej cechy (w formie listy rozwijanej).
Np. może tam być lista kolorów. W momencie gdy wybiorę kolor 'czerwony' to zostanie on i tak dodany w formie tekstowej do tabeli features_values - pole value_string. No chyba że już taki istnieje to wtedy dodam tylko krotkę łączącą tą wartość z danym produktem (czyli dodaje krotkę tylko do 'items_has_features_values'). Nie chce żeby wartości były powtarzane.

Reasumując sama zserializowana tablica domyślnej listy wartości służy tylko pomocniczo do ograniczenia wpisywanych wartości.
Go to the top of the page
+Quote Post
croc
post 23.05.2010, 20:03:21
Post #4





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Ale serializując nie dodajesz klucza obcego na wartość i tracisz solidność struktury. Nie wiem na ile duży projekt tworzysz, ale jeśli co najmniej średni, to jednak zdecydowałbym się na pojedyncze rekordy dla wartości domyślnych.
Go to the top of the page
+Quote Post
Sajrox
post 23.05.2010, 20:24:09
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Tak tylko jakie otrzymam korzyści z tego tytułu?
Te dane będą tylko potrzebne do utworzenia pola typu select z listą domyślnych wartości. Nie mam zamiaru ich stosować nigdzie indziej. Czyli klucze obce nie są potrzebne.
Go to the top of the page
+Quote Post
croc
post 23.05.2010, 20:51:47
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Wiesz, tak się mówi. Najlepiej gdy każda relacja jest obdarzona kluczem obcym. Powiem szczerze, że zamiast takiej serializacji ja osobiście wolałbym zrezygnować całkowicie z wartości domyślnych.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:46