Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]System ofertujący - projekt bazy danych
Forum PHP.pl > Forum > Przedszkole
JanMatuszak
Witam! Z PHP miałem styczność kilka lat temu, no i niestety świat poszedł do przodu, wszystko się pozmieniało, dlatego pragnę zwrócić się z prośbą o pomoc w zakresie projektu bazy danych. Dla przykładu posłużymy się systemem ofertowym dla sprzedaży jabłek. Choć to oczywiście taka anonimizacja potrzeb.

Formularz "telefoniczny" przeprowadzany przez konsultanta sprzedaży jabłek zawiera następująco:
Klient - (Imię, Nazwisko, telefon kontaktowy i adres email)
Produkt do wyboru (jeden z 3 lub 4) (np. Jabłka czerwone, jabłka zielone, jabłka z brzydką skórką)
Każdy produkt posiada swoją podklasę: np. Jabłka czerwone z ogonkiem i listkiem, jabłka czerwone z ogonkiem ale bez listka, jabłka czerwone z listkiem ale bez ogonka.
Oczywiście w danej podklasie, jabłka z ogonkiem i listkiem kosztują np:100 zł/kg, ale jabłka z ogonkiem bez listka 150zł/kg a bez listka i bez ogonka 70 zł/kg.
Analogicznie dzieje się w przypadku jabłek zielonych i jabłek z brzydką skórką.
Klient może zażądać oferty wyłącznie na jeden produkt (np. tylko jabłka czerwone), ale wśród czerwonych może mieszać. (np. 10 kg jabłek z listkiem i ogonkiem, 5 kg bez listka ale z ogonkiem, i 2 kg bez listka i ogonka)
Dodatkowo, klient może chcieć aby doliczyć mu do oferty usługi komplementarne tj. mycie jabłek, odważanie, pakowanie, oklejanie specjalną naklejką i woskowanie.
Transport lub brak transportu. Klient decuduje, jeśli decyduje się na transport podaje odległość do oferty i kalkulacji.

Co ma się dziać dalej. Całość zapytań ma wylądować w bazie.

Dodatkowo, ma przeliczyć i przechować w bazie kalkulację, dalej przygotować pdf i umożliwić wysyłkę szkicu oferty do klienta za pomocą danych zebranych podczas składanego zapytania.

I tak sobie wykombinowałem, że:

Baza system_ofertowy zawiera tabele:
Klienci (id, imię, nazwisko, telefon, mail)
Produkty (id, nazwa, podklasa, cena za kilogram)
Usługi (id, nazwa, cena_usługi)
Oferta (id, id, klienta, ilosc produktu ogólem, podklasaA_ilość, podklasaB_ilość, podklasaC_ilość, cenaA, cenaB, cenaC, Wartość CenyA, Wartość CenyB, Wartość CenyC, .... wartość usługiA, usługiB, usługiC, ilość usługA, ilość usługB.
Oraz wartość całkowitą oferty.)

Nie wiem czy nie przekombinowałem.... dlatego bardzo proszę o pomoc.
Teraz pytanie, czy jest sens Tworzyć tabelę klienci, skoro wymusi to przed dodaniem klienta sprawdzenie czy nie istnieje w bazie.
Jak już z klientów rezygnujemy, to może lepiej opisać wszystkie produkty i stworzyć jedną tabelę. Logika jednak podpowiada by to rozdrobnić.

Jak Wy byście to widzieli?

I taka refleksja na sam koniec że niby to tylko sprzedaż jabłek, a jak można skomplikować sobie życie smile.gif

gino
Trzeba w tej bazie rozbić to pole podklasa w tabeli oferty na osobne tabele: kategoria_produktu i podkategoria (to standard w sprzedaży) chodzi o to, żeby za każdym zamówieniem nie pisać w ofercie czerwone z ogonkiem, zielone bez ogonka itd. Prowadzi to do nadmiarowości bazy danych. Trzeba dołożyć 3 tabele: 1 -kategoria, 2 - podkategoria a w trzeciej zrobić relację jeden do wielu tych dwóch tabel i użyć ich do wyboru kategorii i podkategorii. W razie gdyby coś doszło można spokojnie dodać i ogarnąć.
Tabela klientów: trzeba się zastanowić jak zrealizować klientów, którzy będą zrobić zakupy co jakiś czas. Trzeba sprawdzić czy klient istnieje, dałbym pole nip albo regon dla firm i pesel lub tel kom dla fizycznego, żeby nie było redundancji, które sprawdza operator w momencie połączenia tel/emaila.
Z oferty wyrzuciłbym podklasy A, B C itd i wstawił odpowiednie id z kategorii i podkategorii według ich relacji.
Wszystkie ceny, vat-y do osobnej tabeli w relacji z kategoriami i podkategoriami, łatwiej nad tym zapanować.
Zakupy hurtowe i rabaty: dołożyć tabele dla stałych klientów i nadać pole rabatowe - % od ceny. Chyba, że wszyscy mają jednakowe ceny.
pdf-y i wysyłka oferty to już czysty php.
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.