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
- 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.
- 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 | 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.