Database
 sql >> Base de données >  >> RDS >> Database

Comment stocker les horaires des employés dans une base de données

Niveau :Débutant

Tant d'organisations sont confrontées au problème commun de stocker les horaires des employés. Quelle que soit l'institution :une entreprise, une université ou simplement un particulier, de nombreuses entités ont besoin d'une application pour consulter les horaires. Par conséquent, je vais essayer de proposer un modèle de base de données, puis, dans un prochain article, nous parlerons d'une application simple pour stocker les horaires des employés dans une base de données.

Actuellement, la conception ressemble à ceci :

Le modèle est assez simple.

Astuce – Stratégies clés naturelles et de substitution

  1. Utilisez une clé primaire de substitution chaque fois que les valeurs de la clé naturelle sont susceptibles de changer ou lorsqu'une clé naturelle serait trop complexe.
  2. Si une clé candidate naturelle se compose d'un petit nombre de colonnes (idéalement une seule) et que ses valeurs ne changent pas, utilisez-la comme clé primaire naturelle

En savoir plus sur les clés primaires naturelles et de substitution.

Le employee table contient des attributs de base décrivant chaque employé, par exemple :nom, prénom, adresse et numéro de téléphone. Le nom et le prénom n'identifient pas de manière unique chaque enregistrement (il peut y avoir plus d'une personne avec le même nom et prénom), c'est pourquoi une nouvelle colonne a été introduite (id ), appelée clé de substitution .

Le schedule table contient les jours et les heures où chaque employé est au travail. La work_date colonne spécifie un jour où chaque employé travaillait. Le start_work_hour et end_work_hour les colonnes identifient les heures de travail pour ce jour.

Supposons que nous ayons un employé appelé Peter. Il était au travail le 4 février et il marque son heure de début et de fin dans le planning.

La ligne correspondante dans le schedule le tableau ressemble à ceci :


identifiant id_employé work_date start_work_hour end_work_hour is_holiday c'est_le_weekend
1 1 2015-02-04 10 16 0 0


Lors de la construction d'un tel système, nous souhaitons peut-être savoir qui a travaillé le plus de nuits ou qui a travaillé le plus de week-ends/jours fériés. Afin de générer des rapports contenant de telles informations, les colonnes is_holiday et is_weekend ont été introduits.

En utilisant cette approche, vous aurez besoin d'avoir une table séparée pour les vacances qui contient les dates des vacances pour l'entreprise. Lorsqu'un employé saisit son temps de travail, les colonnes is_holiday et is_weekend peut être mis à jour à l'aide d'un déclencheur. Après avoir inséré la date et l'heure, le déclencheur vérifie si la date est un jour férié ou un week-end et insère la valeur correcte dans le champ.