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

Come archiviare gli orari dei dipendenti in un database

Livello:Principiante

Così tante organizzazioni affrontano il problema comune di archiviare i programmi dei dipendenti. Non importa quale istituzione:un'azienda, un'università o semplicemente un individuo, molte entità necessitano di un'applicazione per visualizzare gli orari. Pertanto, cercherò di elaborare un modello di database e poi, in un prossimo articolo, parleremo di una semplice applicazione per archiviare gli orari dei dipendenti in un database.

Attualmente il design si presenta come segue:

Il modello è piuttosto semplice.

Suggerimento:strategie chiave naturali e sostitutive

  1. Utilizza una chiave primaria surrogata ogni volta che i valori nella chiave naturale potrebbero cambiare o quando una chiave naturale sarebbe troppo complessa.
  2. Se una chiave candidata naturale è composta da un piccolo numero di colonne (idealmente solo una) e i suoi valori non cambiano, usala come chiave primaria naturale

Ulteriori informazioni sulle chiavi primarie naturali e surrogate.

Il employee la tabella contiene gli attributi di base che descrivono ciascun dipendente, ad esempio:nome, cognome, indirizzo e numero di telefono. Nome e cognome non identificano in modo univoco ogni record (potrebbero esserci più persone con lo stesso nome e cognome), ecco perché è stata introdotta una nuova colonna (id ), chiamata chiave surrogata .

Il schedule la tabella contiene i giorni e le ore in cui ciascun dipendente è al lavoro. Il work_date la colonna specifica un giorno in cui ogni dipendente stava lavorando. L'start_work_hour e end_work_hour le colonne identificano l'orario di lavoro per quel giorno.

Supponiamo di avere un dipendente chiamato Peter. Era al lavoro il 4 febbraio e segna l'ora di inizio e di fine nel programma.

La riga corrispondente nel schedule la tabella si presenta così:


id ID_dipendente data_lavoro inizio_ora_di_lavoro end_work_hour è_vacanza è_il_fine settimana
1 1 04-02-2015 10 16 0 0


Durante la creazione di un tale sistema, potremmo voler sapere chi ha lavorato più notti o chi ha lavorato più fine settimana/ferie. Per generare rapporti che contengano tali informazioni, le colonne is_holiday e is_weekend sono stati introdotti.

Utilizzando questo approccio sarà necessario disporre di una tabella separata per le festività che contenga le date delle festività per l'azienda. Quando un dipendente inserisce il proprio orario di lavoro, le colonne is_holiday e is_weekend può essere aggiornato utilizzando un trigger. Dopo aver inserito la data e l'ora, il trigger verificherà se la data è un giorno festivo o un fine settimana e inserirà il valore corretto nel campo.