Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]System ofertujący - projekt bazy danych, Szukam pomocy w zakresie budowy bazy danych
JanMatuszak
post 24.10.2020, 17:41:37
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 24.10.2020

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


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

Go to the top of the page
+Quote Post
gino
post 24.10.2020, 20:37:41
Post #2





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

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


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.
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: 29.03.2024 - 14:20