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
- Utilizza una chiave primaria surrogata ogni volta che i valori nella chiave naturale potrebbero cambiare o quando una chiave naturale sarebbe troppo complessa.
- 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 | 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.