Nivå:Nybörjare
Så många organisationer står inför det vanliga problemet med att lagra anställdas scheman. Oavsett vilken institution:ett företag, ett universitet eller helt enkelt en individ, behöver många enheter en applikation för att se scheman. Därför kommer jag att försöka komma på en databasmodell och sedan, i en framtida artikel, kommer vi att prata om en enkel applikation för att lagra anställdas scheman i en databas.
För närvarande ser designen ut som följer:
Modellen är ganska okomplicerad.
Tips – Naturliga och surrogatnyckelstrategier
- Använd en surrogat-primärnyckel närhelst värden i den naturliga nyckeln kan ändras eller när en naturlig nyckel skulle vara för komplex.
- Om en naturlig kandidatnyckel består av ett litet antal kolumner (helst bara en) och dess värden inte ändras – använd den som en naturlig primärnyckel
Läs mer om naturliga och surrogat primärnycklar.
employee
Tabellen innehåller grundläggande attribut som beskriver varje anställd, till exempel:namn, efternamn, adress och telefonnummer. Namn och efternamn identifierar inte varje post unikt (det kan finnas mer än en person med samma namn och efternamn), det är därför en ny kolumn introducerades (id
), kallad en surrogatnyckel .
schedule
Tabellen innehåller dagar och timmar då varje anställd är på jobbet. work_date
kolumnen anger en dag då varje anställd arbetade. start_work_hour
och end_work_hour
kolumner identifierar arbetstimmar för den dagen.
Låt oss anta att vi har en anställd som heter Peter. Han var på jobbet den 4 februari och han markerar sin start- och sluttid i schemat.
Motsvarande rad i schedule
tabellen ser ut så här:
id | employee_id | arbetsdatum | start_arbetstid | slut_arbetstid | är_semester | är_helg |
1 | 1 | 10 | 16 | 0 | 0 |
När vi bygger ett sådant system kanske vi vill veta vem som jobbade flest nätter eller vem som jobbade mest helger/helger. För att generera rapporter som innehåller sådan information, kolumner is_holiday
och is_weekend
introducerades.
Om du använder det här tillvägagångssättet måste du ha en separat tabell för helgdagar som innehåller datumen för företagets helgdagar. När en anställd anger sin arbetstid visas kolumnerna is_holiday
och is_weekend
kan uppdateras med en trigger. Efter att ha infogat datum och tid kommer utlösaren att kontrollera om datumet är en helgdag eller helg och infoga rätt värde i fältet.