Niveau:Begynder
Så mange organisationer står over for det fælles problem med at gemme medarbejderplaner. Uanset hvilken institution:en virksomhed, et universitet eller blot en enkeltperson, har mange enheder brug for en ansøgning for at se tidsplaner. Derfor vil jeg forsøge at komme med en databasemodel, og så vil vi i en fremtidig artikel tale om et simpelt program til at gemme medarbejdernes tidsplaner i en database.
I øjeblikket ser designet således ud:
Modellen er ret ligetil.
Tip – Naturlige og surrogatnøglestrategier
- Brug en surrogat primær nøgle, når værdier i den naturlige nøgle muligvis ændres, eller når en naturlig nøgle ville være for kompleks.
- Hvis en naturlig kandidatnøgle består af et lille antal kolonner (ideelt set kun én), og dens værdier ikke ændres – brug den som en naturlig primærnøgle
Få flere oplysninger om naturlige og surrogat primære nøgler.
employee
tabellen indeholder grundlæggende egenskaber, der beskriver hver enkelt medarbejder, for eksempel:navn, efternavn, adresse og telefonnummer. Navn og efternavn identificerer ikke hver post entydigt (der kan være mere end én person med samme navn og efternavn), det er grunden til, at en ny kolonne blev introduceret (id
), kaldet en surrogatnøgle .
schedule
tabel indeholder de dage og timer, hvor hver medarbejder er på arbejde. work_date
kolonne angiver en dag, hvor hver medarbejder arbejdede. start_work_hour
og end_work_hour
kolonner identificerer arbejdstimer for den pågældende dag.
Lad os antage, at vi har en medarbejder, der hedder Peter. Han var på arbejde den 4. februar, og han markerer sit start- og sluttidspunkt i tidsplanen.
Den tilsvarende række i schedule
tabellen ser sådan ud:
id | medarbejder-id | arbejdsdato | start_arbejdstime | slut_arbejdstime | er_ferie | er_weekend |
1 | 1 | 10 | 16 | 0 | 0 |
Mens vi bygger et sådant system, vil vi måske gerne vide, hvem der arbejdede flest nætter, eller hvem der arbejdede flest weekender/ferier. For at generere rapporter, der indeholder sådanne oplysninger, kolonner is_holiday
og is_weekend
blev introduceret.
Ved at bruge denne tilgang skal du have en separat tabel for helligdage, der indeholder datoerne for ferierne for virksomheden. Når en medarbejder indtaster deres arbejdstid, er kolonnerne is_holiday
og is_weekend
kan opdateres ved hjælp af en trigger. Efter at have indsat dato og klokkeslæt, vil udløseren kontrollere, om datoen er en helligdag eller weekend, og indsætte den korrekte værdi i feltet.