projekt bazy urlopów

0

Witam doświadczonych fachowców!
Planuje stworzyć bazę urlopów i mam w związku z tym pytanie o poprawność stworzonej przeze mnie bazy.
Mam 6 tabel:

ewidencja (pola: idewidencji, idpracownika, idstopnia, idurlopu, idwydziału, od, do, idroku, zostało, wykorzystał, uwagi)
pracownicy (idpracownika, imie, nazwisko)
stopnie naukowe (idstopnia, nazwa ) np. mgr. prof.
urlopy (idurlopu, nazwa) np. okolicznosciowy, nagrodowy, zdrowotny
wydziały (idwydziału, nazwa) np. wydział projektowy, wydział wdrożeniowy
rok (idroku, nazwa) np. 2007, 2008

Cel jest taki, aby była ewidencja urlopów pracowników. Chcę wiedzieć kiedy dany pracownik był na urlopie, ile dni wykorzystał, ile dni mu zostało, ilu pracowników z danego wydziału nie wykorzystało jeszcze urlopu z roku 2007, 2008. Przy wpisaniu daty od - np. 2008-09-12 do 2008-09-17 będzie liczył ilość dni roboczych czyli 4 dni.
Proszę o ewentualne sugestie. Z góry dziękuję.

0

Zamiast stopni naukowych dałbym okres zatrudnienia bo to na podstawie okresu zatrudnienia wylicza się wymiar urlopu. Do okresu zatrudnienia wlicza się studia i szkoły odpowiednio: zawodowa - 3 lata, ogólniak - 4 lata, średnia zawodowa - 5 lat, policealna - 6 lat, szkoła wyższa - 8 lat. Przy czym te okresy się nie sumują tzn. jeżeli ktoś skończył zawodówkę, a potem poszedł do technikum, a po maturze na studia to i tak ma tylko 8 lat do okresu zatrudnienia choć uczył się dłużej. Jeżeli ktoś ma okres zatrudnienia nie dłuższy niż 10 lat to przysługuje mu 20 dni urlopu, jeżeli okres zatrudnienia jest dłuższy niż 10 lat to przysługuje mu 26 dni urlopu. Ponadto wymiar urlopu przemnaża się przez wymiar czasu pracy tj. jeżeli ktoś jest zatrudniony na 1/2 etatu i ma 10 lat okresu zatrudnienia to przysługuje mu 26*1/2 = 13 dni urlopu (zaokrąglamy do pełnego dnia czyli w górę jeżeli jest potrzeba).

Okres zatrudnienia oraz wymiar czasu pracy dodałbym do tabeli pracownicy. W tabeli pracowników powinno być jeszcze pole idstopnia jeżeli chcesz wiedzieć jaki stopień naukowy ma dany pracownik oraz idwydziału aby wiedzieć w jakim dziale pracuje. Pozostałe rzeczy wydają się ok choć ja bym to zrobił całkowicie inaczej co nie znaczy, że masz źle ;)

Podsumowując:
ewidencja (pola: idewidencji, idpracownika, idurlopu, od, do, idroku, zostało, wykorzystał, uwagi)
pracownicy (idpracownika, imie, nazwisko, okres_zatrudnienia, wymiar_czasu_pracy, idstopnia, idwydziału)
stopnie naukowe (idstopnia, nazwa ) np. mgr. prof.
urlopy (idurlopu, nazwa) np. okolicznosciowy, nagrodowy, zdrowotny
wydziały (idwydziału, nazwa) np. wydział projektowy, wydział wdrożeniowy
rok (idroku, nazwa) np. 2007, 2008

P.S. Do wymiaru czasu pracy można też zrobić osobną tabelkę i dać idwymiaru do tabeli pracownicy.
pracownicy (idpracownika, imie, nazwisko, okres_zatrudnienia, idwymiaru, idstopnia, idwydziału)
wymiar_czasu_pracy (idwymiaru, wymiar) np. cały etat = 1, pół etatu = 1/2 itd.

0

Ale mgr jest bez kropki, okej? :)

0

Dzięki za uwagi. W moim przypadku każdy pracownik ma urlopu 26 dni robocze. Chciałbym to połączyć z php.

0

To może jeszcze kilka moich wątpliwości :)

Co jeśli urlop będzie od np 15 grudnia 2008 do 15 stycznia 2008? Jakie będzie wtedy idroku? No chyba że ograniczyć daty do wybranego roku, i w takim przypadku wprowadzać dwa rekordy. Jeśli zapewnimy, że te daty są w jednym roku, powiązanie z tabelą rok staje się trochę nadmiarowe. Rok wtedy można wyciągnąć z daty_od lub daty_do.

Nie pasuje mi trochę położenie pól "zostało" i "wykorzystał" w tabeli. Moim jest tym polom bliżej do tabli pracownicy.

Wywaliłbym z ewidencji pola "zostało" i "wykorzystał" a dodał do niej nowe pole "ilość_dni".
"Ilość_dni" to rzeczywista ilość dni urlopowych, po odjęciu weekendow i np swiąt ruchomych. Ze wzgledu na świeta ruchodme trzebaby chyba czasem ręcznie korygować ilość dni wynikającą z odstępu między datami od i do.

Później zastanowiłbym się nad dodaniem takiej tabeli:
pracownicy2rok ( id_pracownika, id_roku, ilosc_dni, wykorzystano_dni )
Można wtedy określać ilość dni wonych dla pracownika w danym roku a wykorzystano_dni obliczałoby się automatycznie na trigerze po dodaniu/edycji/usunieciu rekordu do ewidencji.

Id_wydziału i id_stopnia na pewno bym umieścił w pracowniku. Chyba że dane programu mają być odporne na np zmianę wydziału przez pracownika, to rzeczywiście będą potrzebne też w ewidencji.

Przy takim rozwiązaniu rzeczy które potrzebujesz wyciągnąć z bazy można uzyskać za pomocą kilku prostych widoków.

Pozdrawiam

0

Wielkie dzięki za uwagi. Faktycznie z tymi datami np 15 grudnia 2008 do 15 stycznia 2008 może być problem. Bardzo zależny mi, ilość urlopu była obliczona z uwzględnieniem świąt i dni wolnych- bez ręcznego liczenia.
Pozdrawiam

0

Ideą tej ewidencji urlopów jest to, ażeby można w każdej chwili wiedzieć ilu pracowników jest na urlopie, ile dni urlopu każdy z nich ma jeszcze do wykorzystania, ile już wykorzystał (każdemu przysługuje 26 dni urlopu wypoczynkowego, po 15 latach pracy - urlop dodatkowy 5 dni, po 20 latach - 10 dni).
Pracownik przynosi kartę urlopową a ja muszę to nanieść - np. urlop wypoczynkowy za rok 2008 od 12.09.2008 do 17.09.2008 ( powinien sam mi obliczyć ile to dni roboczych w następnej rubryce i pokazać ile jeszcze dni może wykorzystać), i wpis z jakiego wydziału jest pracownik. Będe chciał znać ilość dni urlopu do wykorzystania pracowników poszczególnych wydziałów.

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