Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Koszty dostawy zalezne od kategorii produktu
Forum PHP.pl > Forum > Bazy danych
swiezak
Mam problem z zaprojektowaniem struktury bazy danych, gdzie koszt dostawy jest zalezny od kategorii, do ktorej nalezy produkt.


Zalozmy, ze koszt dostawy dla wanien jest nastepujacy:
dostawa | platnosc | koszt
odbior osobisty | platnosc gotowka | 0 zl
odbior osobisty | platnosc przelewem | 0 zl
kurier | platnosc przelewem | 100 zl
kurier | platnosc za pobraniem | 120 zl
dostawa firmowa | platnosc gotowka | 40 zl
dostawa firmowa | platnosc przelewem | 40 zl

Dla luster:
dostawa | platnosc | koszt
odbior osobisty | platnosc gotowka | 0 zl
odbior osobisty | platnosc przelewem | 0 zl
kurier | platnosc przelewem | 20 zl
kurier | platnosc za pobraniem | 30 zl
dostawa firmowa | platnosc gotowka | 40 zl
dostawa firmowa | platnosc przelewem | 40 zl

Produkt moze nalezec do kilku kategorii, wiec majac w koszyku kilka produktow z kilku kategorii, system powinien naliczac najwyzszy koszt dostawy, tzn. jesli klient zamowil lustro, dozownik i wanne koszt dostawy dla kuriera, platnosc przelewem powinien wyniesc 100 zl.

W tej chwili mam tabele shipments, ktora przechowuje id, nazwe dostawy i jej koszt.

Oprocz tego tabele platnosci:
id | shimpment_id | name

Platnosci sa polaczone z dostawami relacja wiele do jednego.

Oprocz tego jest stworzona tabela laczaca, shimpents_categories, ktora przechowuje id dostawy i id kategorii.

Na chwile obecna bedzie bardzo duzo mozliwosci wyboru dostawy i platnosci, kategorii jest 100 i zastanawiam sie, czy da rade jakos to wszystko uproscic. W koszyku musze sprawdzac kazdy produkt do jakiej kategorii nalezy, wybrac najwyzszy koszt dostawy dla niego z tabeli shipments, sprawdzic pozostale produkty i dopiero na samym koncu obliczyc finalny koszt dostawy. Jak widac, sporo jest operacji.


Czy ktos z Was moze zaproponowac jakies bardziej optymalne rozwiazanie? Moze jakis inny model relacyjny?
stefano_F
Witam,
ja bym to zrobił tak:

schematy kosztów dostawy (uproszczę):
1) kurier 100 zł, kurier pobranie 140 zł, "waga" 20
2) kurier 20 zł, kurier pobranie 30 zł, "waga" 10
3) kurier 70 zł, kurier pobranie 10zł, "waga" 15

W schematach dodałbym kolumnę "waga" która określałaby "poziom kosztów" im wartość w polu większa tym koszt większy.
Robiąc identyfikatory wagi co np. 10 możesz spokojnie wprowadzić później schemat kosztów dostawy jakiś pośredni,
tak jak w moim przykładzie że 3 jest tańszy od 1 ale droższy od 2.

Każdy produkt musi być przypisany do kategorii.
Dla kategorii przypisujesz schemat kosztów dostawy, np.
- wanny - 1
- lustra - 2
- baterie - 3

Jak klient wybierze produkty, to po sprawdzeniu do jakiej kategorii należą, wyszukasz id schematu kosztów dostawy, który ma maksymalną "wagę".
Ten schemat przypiszesz do zamówienia.



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.