Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Jaka tabelka do przechowywania cen wszystkich kombinacji cech produktów? - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: Jaka tabelka do przechowywania cen wszystkich kombinacji cech produktów? (/thread-jaka-tabelka-do-przechowywania-cen-wszystkich-kombinacji-cech-produktow)



Jaka tabelka do przechowywania cen wszystkich kombinacji cech produktów? - tytanick - 25-08-2012

Witam

Chciałbym poznać waszą opinię na temat rozwiązania logistycznego problemu z bazą danych jakim jest trzymanie cen dla kombinacji cech produktów.

Otóż sprawa wygląda tak:

Tabela GRUP cech o nazwie "attributeGroup" (może być nieskończoność grup, generlanie z 10)
id, name
1, Kolor
2, Wielkość
3, Materiał

Tabela WARTOŚCI cech o nazwie "attributeValue" (może być nieskończoność wartości, generlanie tez z 10)
id, attributeGroup_id, name
1, 1, Czarny
2, 1, Biały
3, 1, Zielony
4, 2, Mały
5, 2, Duży

Problem mam z stworzeniem tabeli cen gdzie będzie inna cena do każdej kombinacji wartości cech,
Najprostsze rozwiązanie to stowrzenie takiej oto tabelki "price", gdzie w value wstawiam id WARTOŚCI cechy z poprzedniej tabelki
id, price, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11
1, 55, 1, 4, 0, 0, pozostałe same zera (55 zł to koszt Czarnego-Małęgo)
2, 66, 1, 5, 0, 0, pozostałe same zera (66zł to koszt Czarnego-Dużego)
3, 54, 2, 4, 0, 0, pozostałe same zera (54 zł to koszt Białego-Małego)
no i tak dalej, wszystkie kombinacje z wszystkimi

I pomysł jest żeby właśnie wstawiać te id WARTOŚCI pokolei w tabelke z cenami w pola valueX
Tylko nie podoba mi się to bo jak będzie dużo rekordów i dużo kombinacji to system sie zarżnie.
Macie jakiś inny pomysł jak przechowywać ceny wszystkch kombinacji ?


RE: Jaka tabelka do przechowywania cen wszystkich kombinacji cech produktów? - Pedro84 - 25-08-2012

Hej,

na Twoim przykładzie widać, że:
- każdy atrybut może mieć wiele wartości
- każdy produkt może mieć wiele atrybutów
- każdy produkt może mieć wiele cen zależnie od wartości atrybutu.

Są to standardowe relacje many:many. Baza zaprojektowana poprawnie, normalizacja pełną gębą. Bez zastosowania denormalizacji bazy danych, nic innego nie wymyślisz. Tak zwane pivot tables właśnie temu służą: do przechowywania informacji o relacjach m:m.

Kwestia wydajności? Jeśli masz mniej niż 10000 produktów, to na spokojnie tę kwestię olej. Pamiętaj: "premature optimization is a root of all evil".

Możesz oczywiście przechowywać wszystko w tabeli produktów, w postaci zserializowanej, ale:
- każda operacja zmiany: deserializacja, zmiana, serializacja, zapis
- wyświetlenie: deserializacja, wyświetlenie
- wyszukiwanie po takich rekordach jest prawdziwym bólem.

Moim zdaniem, nie ma sensu.