konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Witam,
Witam, tak sobie klikam od jakiegoś czasu po google, ale mam chyba dziś zły dzień bo mi nie wychodzi ;p ;) Szukam jakiegoś schematu bazy danych dla systemu magazynowego. Niestety nie jestem z wykształcenia informatykiem, nikt nigdy mnie nie uczył jak taki system powinien być zbudowany. Doszedłbym na pewno sam do optymalnej budowy, ale metodą prób i błędów i wielu poprawek. A jak wszyscy wiemy zmiany w bazie danych późniejszym na etapie projektu są niemile widziane ;)
Więc o co chodzi? Szukam przykładów z których mógłbym się pouczyć. Jakie tabele są najczęściej potrzebne w takim systemie, jakie kolumny itp itd. Może ktoś z was gdzieś juz tego szukał, znalazł, albo robił coś podobnego i mógłby podesłać mi jakiekolwiek materiały, linki. Będę wdzięczny :)

Robię większy system, baza to tylko początek. Nie zależy mi na gotowcu tylko raczej na przykładach aby się z nich wyczytać rzeczy o których mogę sam nie pomyśleć.
Dokładniej np. jak przechowywać salda pozycji w magazynie? Po każdej PZ i WZ obliczać na nowo saldo i trzymać je w komórce, czy trzymać tylko stany magazynowe, a ewentualne saldo obliczać poprzez sumowanie... itp takie rzeczy mnie nurtują. Co wyrzucić do osobnej tableli, jakie dane opłaca się trzymać razem by nie robić czasochłonnego JOIN itp..

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Polecam Enove - kombajn księgowy.
Baza jest na mssqlu.
Można sobie włączyć tryb pracy programu w którym na dole ekranu wyświetlane są wszystkie zapytania do bazy.
Wszystko podane na tacy ;-)

Temat: Schemat bazy danych systemu magazynowego

Generalnie będziesz potrzebował minimu dwóch tabel.

MAGAZYN
id - numer magazynu/działu
nazwa - nazwa magazynu/działu

PRODUKT
id - numer produktu
id_m - numer magazynu/działu do którego jest on przypisany
nazwa - nazwa produktu
stan - ilość produktów na stanie
cena - cena produktu

Dodając produkt dodajesz przypisujesz mu nazwę, cenę, ilość na stanie i do którego magazynu jest przypisany. To jest najprostszy schemat

Trzeba pamiętać, że pole stan musi być edytowane za każdym razem, gdy produkt dodajesz lub wyjmujesz. Pole ilość wpisujesz ręcznie tylko na początku. Np. gdy dodajesz do bazy, że na stanie masz 100 telewizorów wpisujesz to ręcznie. następnie, gdy z magazynu wyjmujesz 1 telwizor musisz zrobić update który odejmie telwizor ze stanu i analogicznie z dodawaniem.

Gdy z kolei chcesz wyświetlić stan magazynów wystarczy
SELECT * FROM produkt WHERE id_m = '1' ORDER BY nazwa

I tak dostaniesz stan całego magazynu

proste i skuteczne moim zdaniemDawid Daniel Pacholczyk edytował(a) ten post dnia 13.06.09 o godzinie 09:48
Adrian P.

Adrian P. pamiętaj o tym, kto
chce latać musi
skoczyć

Temat: Schemat bazy danych systemu magazynowego

Ogólny zarys magazyny to będzie wyglądał tak jak napisał Dawid i moim zdaniem będzie to najtrafniejsze, możesz ew. dodać pole opis w którym będzie można napisać kilka słów o produkcie, ew. jeszcze możesz dać trzecią tabelę ZDJECIA do której mógłbyś dodatkowo dodawać fotki do każdego produktu, ja myślę że taki magazyn później można wykorzystać jako sklep :)

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Dawid Daniel Pacholczyk:
... Pole ilość wpisujesz ręcznie tylko na początku.

Słyszał Pan o pojęciu remanent tudzież bilans ?

Nie uczcie "wprowadzania ręcznie". Cały ruch towaru powinien mieć odzwierciedlenie w tabelach!

To co podałeś to bardzo, bardzo, bardzo prosty schemat. Sądzę, że autorowi chodziło o coś zupełnie innego.

By zrealizować "ruch towarów na magazynie" może być wymaganych kilka dodatkowych tabel. Mimo teoretycznej prostoty ruchu towarów na magazynie samo zagadnienie nie jest aż tak banalne.

W grę wchodzą:
1) przychód / rozchód
2) rodzaje dokumentów przychodu / rozchodu (PW, PZ, RW, WZ
etc. - każdy z nich może charakteryzować się może różną ceną rozchodu, niektóre mogą zawierać dwie ceny rozchodu).
3) lifo / fifo
4) cena ewidencyjna! (w różnych firmach stosowane są różne ceny ewidencyjne)

Można by tak jeszcze powymieniać sporo - gdyż to dopiero początek (nie wspominam o dokumentach sprzedażowych typu FV czy FV korygująca bo i tu trzeba przewidzieć dużo spraw).Robert B. edytował(a) ten post dnia 13.06.09 o godzinie 10:29

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Krzysztof Konieczny:
...
Dokładniej np. jak przechowywać salda pozycji w magazynie? Po każdej PZ i WZ obliczać na nowo saldo i trzymać je w komórce,

Co rozumiesz pod pojęciem: obliczać nowe saldo ?

Czy aby to zrealizować nie wystarczy Tobie od "salda" odjąć bieżące WZ lub też dodać bieżące PZ ?

Generalnie stan ilościowy trzymałbym w tabeli jako "saldo". Nie ma sensu "sumować" salda z dokumentów za każdym razem gdy jest ono potrzebne szczególnie wtedy jak bazy nieco urosną.Robert B. edytował(a) ten post dnia 13.06.09 o godzinie 10:37
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: Schemat bazy danych systemu magazynowego

Dokładnie. Magazyn przedstawiony przez Dawida niewiele różni się od arkusza kalkulacyjnego.

Nie ma co zabierać się za modelowanie magazynu w bazie danych, bez określenia dokumentów które odpowiadają za wprowadzanie i wyprowadzanie towaru z magazynu (i ewentualnie za przesunięcia pomiędzy magazynami).

Proponuję rozdzielić dokumenty magazynowe od dokumentów handlowych (faktury). Mimo iż może być kuszącym założenie, że faktura oznacza wydanie towaru z magazynu, w rzeczywistości niekoniecznie tak musi być.

Temat: Schemat bazy danych systemu magazynowego

Robert to jest bardzo, bardzo, bardzo prosty schemat jak to nazwałeś. Bo jest to fundament od którego należy wyjść. To co opisałeś nie ma racji bytu bez tego co ja opisałem :)

Wprowadzenie ręczne, które tak bardzo ci się nie podoba jest tylko w początkowej fazie. Przecież rekordy trzeba jakoś wprowadzić do bazy, ich ilość nie pojawi się tam magicznie. Ruch owszem należy odzwierciedlić w tabelach np. po przed dodanie tabeli

ZAMÓWIENIA
id - numer zamówienia
id_p - numer produktu który został zamówiony
ilosc - ilość produktów które zostały zamówione
data - data zamówienia

Jednak kiedy dostajesz nowy produkt i wprowadzasz go do magazaynu to ani magazyn ani tabela w magiczny sposób nie dowie się ile tego produktu wprowadzono, dlatego pierwsze wprowadzenie musi być "ręczne". Następnie każdy wyjazd produktu POWINIEN być zautomatyzowany.

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Dawid Daniel Pacholczyk:
Robert to jest bardzo, bardzo, bardzo prosty schemat jak to nazwałeś. Bo jest to fundament od którego należy wyjść. To co opisałeś nie ma racji bytu bez tego co ja opisałem :)

Z tym się zgadzam.

Dawid Daniel Pacholczyk:
Wprowadzenie ręczne, które tak bardzo ci się nie podoba jest tylko w początkowej fazie. Przecież rekordy trzeba jakoś wprowadzić do bazy,

Rekordy do bazy towarowej wprowadzasz ze stanem "zero". Stany "zapodajesz" dokumentami.

Dawid Daniel Pacholczyk:
Jednak kiedy dostajesz nowy produkt i wprowadzasz go do magazaynu to ani magazyn ani tabela w magiczny sposób nie dowie się ile tego produktu wprowadzono, dlatego pierwsze wprowadzenie musi być "ręczne".

Nie zgadzam się! Odpowiedź powyżej. Nowy towar nie bierze się z "magii" tylko najczęściej z zakupu (czasem z produkcji). Na to są dokumenty!Robert B. edytował(a) ten post dnia 13.06.09 o godzinie 10:51

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Michał Jarosz:
...
Proponuję rozdzielić dokumenty magazynowe od dokumentów handlowych (faktury). Mimo iż może być kuszącym założenie, że faktura oznacza wydanie towaru z magazynu, w rzeczywistości niekoniecznie tak musi być.

Najczęściej odbywa się to tak, że część informacji z dokumentu magazynowego jest podstawą do wystawienia FV. Np takie elementy jak:
- produkt (id)
- ilość

pochodzą bezpośrednio z WZ (tabela rozchodu). Pozostałe elementy są "uzupełniane" w tej tabeli dla potrzeb dokumentów sprzedaży - ale na to jest wiele rozwiązań.

Generalnie jednak "dane nagłówkowe" dok. sprzedaży powinny być umieszczone w kolejnej tabeli. W nich muszą być zawarte takie dane jak:
- data sprzedaży
- forma płatności
- termin płatności
- ... wiele innych.

Dalej ma to powiązanie z należnościami (rozrachunki)... a to już raczej kolejna tabela ;)

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Może więc takie tabele:

1) Magazyny (o ile jest potrzebna wielomagazynowość)
2) produkty/usługi:
- nazwa
- stan
- stawka vat
- ...

3) ruch towarów
- ilość przychodu / rozchodu (w tym: ilość zadysponowaną / ilość wydaną) ;)
- cena przychodu / rozchodu (cena ewidencyjna)
- stawka vat
- cena sprzedaży ( ile to sprzedaż)
- ...

4) nagłówki dok. magazynowych
- odbiorca / dostawca
- rodzaj dok (WZ/PZ ... )
- nr dokumentu
- data dok.
- ...

5) nagłówki dok. sprzedaży
- rodzaj dok (FV, paragon... )
- nr dokumentu
- data dok.
- forma płatności
- ....
- wartość do zapłaty

6) rozrachunki
- ....

zaznaczam, że to ledwo rys. Wolałbym aby autor nie wzorował się na tym bez dogłębnych przemyśleń.

W każdej z tabel pokazałem tylko istotne informacje (te, które pozwoliły opisać sens istnienia tabeli) , reszta pól jest do dodania.Robert B. edytował(a) ten post dnia 13.06.09 o godzinie 11:15
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: Schemat bazy danych systemu magazynowego

Dalej:

- Magazyn można podzielić na stanowiska składowania
(palety, regały itp)

- Może istnieć konieczność rozliczania towarów z dokładnością do numeru seryjnego.

Innymi słowy w zależności od wymagań struktura może być mniej lub bardziej złożona. Jak zwykle dobrym pomysłem jest obejrzenie jak zrobił to ktoś inny ;)

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Michał Jarosz:
...
Innymi słowy w zależności od wymagań struktura może być mniej lub bardziej złożona. Jak zwykle dobrym pomysłem jest obejrzenie jak zrobił to ktoś inny ;)

Jeśli to ma być system uniwersalny (dla każdego) to potrzebny będzie ktoś kto obejmie to szerokim spojrzeniem - jeśli ma być to indywidualne rozwiązanie to ustaliłbym potrzeby z klientem. "Inni" mogli mieć inne potrzeby.
Michał Jarosz:
- Magazyn można podzielić na stanowiska składowania
(palety, regały itp)

Lub też umieścić w tabeli produktów pole: miejsce składowania ;)
Michał Jarosz:
- Może istnieć konieczność rozliczania towarów z dokładnością do numeru seryjnego.

Jak widać takich elementów naprawdę może być wiele.Robert B. edytował(a) ten post dnia 13.06.09 o godzinie 11:19
Bartosz Raczek

Bartosz Raczek .NET Software
Developer

Temat: Schemat bazy danych systemu magazynowego

Robert B.:
Generalnie jednak "dane nagłówkowe" dok. sprzedaży powinny być umieszczone w kolejnej tabeli. W nich muszą być zawarte takie dane jak:
- data sprzedaży
- forma płatności
- termin płatności
- ... wiele innych.

Ja poszedłbym dalej w zależności od ilości dokonywanych operacji tabele będą bardzo szybko puchnąć. Niestety dane mi jest pracować na systemie gdzie wszystkie rodzaje dokumentów: FV, KF, WZ, RW, MM, PZ itp trzymane są w jednej tabeli (pozycje) a w drugiej trzymane są nagłówki do nich (naglowki). Przy dużych ruchach magazynowych i sprzedaży baza mssql-a wytrzymuje ok roku bez zadyszki. Trzeba ręcznie zamykać rok i otwierać nową bazę. Generalnie rozdzieliłbym wszystkie rodzaje dokumentów na osobne tabele (pozycje_mm, pozycje_fv itp)
Wojciech Zieliński

Wojciech Zieliński IT
Project/Programme/Pe
ople Manager
(PRINCE2
Practicioner...

Temat: Schemat bazy danych systemu magazynowego

A mnie muszę przyznać, że bardzo nurtuje samo podejście. Jak bowiem można robić schemat bazy danych bez analizy funkcjonalnej. Trzeba najpierw dokładnie przeanalizować i stwierdzić, co jest potrzebne - a później brać się za jakikolwiek ERD !
A jeśli robisz większy system - baza zdecydowanie nie jest początkiem ! Początkiem jest rozpiska funkcjonalna, projekt encji - a później baza.
Pytasz, gdzie i jak robić JOINy - to wynika z kolei z przypadków użycia i scenariuszy wykorzystywania. Dopiero tam zobaczysz, jakie dane są najczęściej wykorzystywane, aby je "pożenić" tak, że nie będziesz miał problemów wydajnościowych.
Wojciech K.

Wojciech K. realizator pomysłów
własnych

Temat: Schemat bazy danych systemu magazynowego

Dawid Daniel Pacholczyk:
Generalnie będziesz potrzebował minimu dwóch tabel.
MAGAZYN
PRODUKT

jako niezbędne minimum musiałaby być jeszcze tabela zawierająca ZDARZENIA, czyli zakupy (dostawy) i sprzedaż, plus tabela z DOKUMENTAMI księgowymi (tzn. de facto danymi "nagłówkowymi" faktur), plus tabela łącząca te dwie tabele (jako, że często faktura zawiera ileś pozycji, poza tym, do danej grupy zdarzeń może się odwoływać kilka dokumentów - zarówno te księgowe, jak i magazynowe), plus oczywiście tabela KONTRAHENCI, żeby w DOKUMENTACH było do czego się odwoływać.

minimum coś takiego:

ZDARZENIA
id_zdarzenia
id_produktu
sztuk (wartość dodatnia przy dostawie, ujemna przy sprzedaży)
cena (cena za sztukę w tym konkretnym zdarzeniu)
vat (stawka VAT aktualna przy zdarzeniu)

DOKUMENTY
id_dokumentu
id_kontrahenta
data
platnosc_typ
platnosc_termin
typ (FV, FK itd.)
aktywny (dla FV po których nadeszła FK)
id_poprzedniego (dla FK odwołanie do poprzedniczki)

DOKUMENTY_POZYCJE
id_dokumentu
id_zdarzenia

KONTRAHENCI
wiadomo.....

ułatwia to potem życie nawet przy prostym sklepie. BARDZO ułatwia.
zamiast "dodawać ręcznie 100 telewizorów" dodajesz zdarzenie typu dostawa 100 telewizorów i od razu masz zapisane skąd je masz i za ile i wiesz potem ile na nich zarobiłeś i ile wpisać do deklaracji VATowskich i PITowskich.

Temat: Schemat bazy danych systemu magazynowego

Wojciech K.:
Dawid Daniel Pacholczyk:
Generalnie będziesz potrzebował minimu dwóch tabel.
MAGAZYN
PRODUKT

jako niezbędne minimum musiałaby być jeszcze tabela zawierająca ZDARZENIA, czyli zakupy (dostawy) i sprzedaż, plus tabela z DOKUMENTAMI księgowymi (tzn. de facto danymi "nagłówkowymi" faktur), plus tabela łącząca te dwie tabele (jako, że często faktura zawiera ileś pozycji, poza tym, do danej grupy zdarzeń może się odwoływać kilka dokumentów - zarówno te księgowe, jak i magazynowe), plus oczywiście tabela KONTRAHENCI, żeby w DOKUMENTACH było do czego się odwoływać.

minimum coś takiego:

ZDARZENIA
id_zdarzenia
id_produktu
sztuk (wartość dodatnia przy dostawie, ujemna przy sprzedaży)
cena (cena za sztukę w tym konkretnym zdarzeniu)
vat (stawka VAT aktualna przy zdarzeniu)

DOKUMENTY
id_dokumentu
id_kontrahenta
data
platnosc_typ
platnosc_termin
typ (FV, FK itd.)
aktywny (dla FV po których nadeszła FK)
id_poprzedniego (dla FK odwołanie do poprzedniczki)

DOKUMENTY_POZYCJE
id_dokumentu
id_zdarzenia

KONTRAHENCI
wiadomo.....

ułatwia to potem życie nawet przy prostym sklepie. BARDZO ułatwia.
zamiast "dodawać ręcznie 100 telewizorów" dodajesz zdarzenie typu dostawa 100 telewizorów i od razu masz zapisane skąd je masz i za ile i wiesz potem ile na nich zarobiłeś i ile wpisać do deklaracji VATowskich i PITowskich.

Co do dokumentów zgadzam się jak najbardziej co to zdarzeń chciałbym zauważyć, że wymieniłem w późniejszej wypowiedzi tabelę odpowiadającą za takie czynności :)

Ogólnie prócz powiedzmy tych 3 podstawowych tabel reszta zależy od tego jak bardzo ma to być rozbudowany system

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Witam,
Przepraszam, że nie odpowiadałem, nie było mnie przez 4 dni. Dzisiaj wróciłem i siadam dalej nad zagadnieniem.

Po szybkiej lekturze wątku wyjaśnię pare spraw:

System magazynowy ma być uniwersalny, nie jest robiony dla konkretnego klienta.

System magazynowy będzie powiązany dokumentami sprzedażowymi takimi jak FV, FK, Nota korygująca (istnieją już w systemie jako ewidencja - bez wyszczególnionych pozycji).

Na początek mam tabele:

STOCK - unikatowe prototypy produktów (nazwa, jednostka)
STORAGE_LIST - magazyny
MANUFACTURERS - producenci
ITEM_SALDO - saldo pozycji
(in, out, saldo, id_item, doc_code, doc_type...)
DELIVERIES - dostawy PZ
(number, date, doc_code..)
DELIVERED_ITEMS - pozycje danej PZ
RELEASES - wydania WZ
RELEASED_ITEMS - wydane pozycje WZ

Nad resztą dalej pracuje

Pozdrawiam

PS.
fajnie byłoby mieć taką funkcjonalność by móc zrobić rezerwację towaru, może poprzez jakiś bufor dokumentów tymczasowych.Krzysztof Konieczny edytował(a) ten post dnia 15.06.09 o godzinie 09:06

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Krzysztof Konieczny:
...
System magazynowy ma być uniwersalny, nie jest robiony dla konkretnego klienta.


W takim razie zaproś do projektu kogoś z doświadczeniem w tej kwestii - gdyż czyha tu wiele pułapek. Choćby taka, że wspomniana wcześniej nota nie może tu być zastosowana gdyż... nota służy do korygowania dok. obcych - zaś do korygowania dok. własnych służy FV korygująca.

Krzysztof Konieczny:
...
fajnie byłoby mieć taką funkcjonalność by móc zrobić rezerwację towaru, może poprzez jakiś bufor dokumentów tymczasowych.

Równoległa sprzedaż także wymaga takiego "bufora". Lepiej by nie doszło do tego, że w trakcie tworzenia dwóch WZ ostatnia sztuka trafiła na obydwie WZtki.Robert B. edytował(a) ten post dnia 15.06.09 o godzinie 20:55

konto usunięte

Temat: Schemat bazy danych systemu magazynowego

Można to rozwiązać za pomocą 'semafora' w bazie danych - komórki / flagi którą na początku zamawiania się ustawia i tym samym robi się lock na konkretnym towarze.



Wyślij zaproszenie do