sql >> Databasteknik >  >> RDS >> Database

Hur man lagrar anställdas scheman i en databas

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

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


  1. ORA-00904 ogiltig identifierare på avkodningsalias

  2. Kan du ringa en webbtjänst från TSQL-kod?

  3. Reflektion i PLSQL?

  4. CSV i SQL-utvecklare...