Struktura bazy danych - magazyn

0

Czy takie rozwiązanie struktura bazy danych jest dobre:

Tabela.1 Dostawy

  • id_dostawy
  • koszt, fv, kontrahent itp

Tabela.2 Magazyn

  • id_produktu
  • id_dostawy
  • Kod
  • Nazwa
  • ilosc
  • itp.

Tabela.3 Zamówienia / Sprzedaż

  • id_sprzedazy
  • id_produktu
  • sztuk

Rozwiązanie tego typu wydaje mi się całkiem sensowne w Tabeli Magazyn podajemy indeks dostawy z której pochodzi produkt a w tabeli 3 podaje indeks produktu z magazynu , który został sprzedany w określonej ilości.

Tylko mam jedną wątpliwość: Przegląd zawartości czyli tego co było w dostawie.

Aby to zrobić muszę wykonać wiele czynności:

Przeszukać Tabele Magazyn i wybrać tylko te produkty które pochodzą z określonej dostawy (To jedno zapytanie sql)
Przeszukać Tabele sprzedane i sprawdzić które produkty zostały sprzedane właśnie z tej dostawy i dodać je do poprzedniego wyniku (czyli powiększyć liczbę sztuk w magazynie).
Przeszukać kolejne tabele takie jak Rezerwacje, wydania z magazynu itp.

Czy tak to się robi?

0

Tabela.3 Zamówienia / Sprzedaż

  • id_sprzedazy
  • id_produktu
  • sztuk

Czy w jednym zamówieniu nie dopuszczamy sprzedaży dwóch różnych produktów?
Tutaj powinieneś mieć:

Tabela Zamówienie

  • id_zamowienia

Tabela łącz Zamówienie <-> Produkt
id_zlaczenia, id_zamowienia, id_produktu, ilość


A mechanizmy tworzące zamówienia (rezerwujące produkty i zmieniające stan magazynu) powinny i tak być pozamykane w transakcje, najlepiej jako procedury.

0

Tak z tymi zamówieniami to tak jak najbardziej trzeba zrobić. A napisałem sprzedaż / zamówienia bo chodziło mi o to że będą kolejne tabele. Ale wracając do pierwotnego mojego założenia. Rozważam taki przypadek:

Tabela Dostawy

ID---DATA DOSTAWY----INNE DANE------
5----20.03.2010-----------50zł----------

Tabela Magazyn

ID---ID_DOSTAWY------KOD-------------NAZWA---------MAGAZYN------SZTUK DOSTĘPNYCH----
1----------5------------LAMP_1-------LAMPKA LED---------M001-----------------3-------------
2----------5------------ROWER----------ROWEREK---------M021-----------------2-------------

Powyżej przedstawiłem stan jaki mamy aktualnie w magazynie: czyli jedna dostawa która zawiera 3 lampki i 2 rowerki :)

Teraz Sprzedajemy 3 lampki:

Tabela Magazyn

ID---ID_DOSTAWY------KOD-------------NAZWA---------MAGAZYN------SZTUK DOSTĘPNYCH----
1----------5------------LAMP_1-------LAMPKA LED---------M001-----------------0-------------
2----------5------------ROWER----------ROWEREK---------M021-----------------2-------------

Tabela Sprzedaż

ID----ID_PRODUKTU------SZTUK SPRZEDANYCH--
1-----------1--------------------3-------------

Czyli zmniejszam liczbę sztuk w tabeli magazyn a zwiększam w tabeli sprzedane. I teraz maje pytanie brzmi czy do tabeli sprzedane kopiować wszystkie dane z tabeli magazyn czy tylko nr rekordu? Pytam się bo po pewnym czasie w tabeli magazyn będę miał ogromną listę produktów ze stanem 0 którego tak naprawdę nie będę mógł zwiększyć a to dlatego że kolejne sztuki będą z nową dostawą czyli: (Nowa dostawa w której są kolejne 3 sztuki lampek)

Tabela Dostawy

ID---DATA DOSTAWY----INNE DANE------
5----20.03.2010-----------50zł----------
6----25.05.2012-----------100zł---------

Tabela Magazyn

ID---ID_DOSTAWY------KOD-------------NAZWA---------MAGAZYN------SZTUK DOSTĘPNYCH----
1----------5------------LAMP_1-------LAMPKA LED---------M001-----------------0-------------
2----------5------------ROWER----------ROWEREK---------M021-----------------2-------------
3----------6------------LAMP_1-------LAMPKA LED---------M001-----------------3-------------

Pytanie czy tak się to robi czy jakoś inaczej. Czy ktoś mógłby mi podesłać strukturą jakiejś bazy np mysql abym mógł sobie przeanalizować po kluczach jak to powinno być defakto zrobione?

1 użytkowników online, w tym zalogowanych: 0, gości: 1