sql >> Database teknologi >  >> RDS >> Database

Sådan gemmer du medarbejdernes tidsplaner i en database

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

  1. 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.
  2. 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 2015-02-04 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.


  1. Risiko ved brug af dynamisk hukommelse i Hyper-V

  2. Brug af Substr med Instr til at udtrække en streng i Oracle

  3. Brug mycli og lær MariaDB/MySQL komfortabelt i en terminal!

  4. MySQL:er en SELECT-sætning skelet mellem store og små bogstaver?