Bonjour,
Quelques remarques concernant le modèle de données :
L'usage est de nommer les tables au singulier (on se doute bien qu'il y a potentiellement plusieurs employés) et sans caractères spéciaux (sans accents, ligatures ou cédille par exemple). Ceci pour simplifier les requêtes (les délimiteurs de noms d'objets sont ainsi inutiles). Ce faisant, "employe" plutôt que "employés" serait préférable.
De plus, une table nommée "employe" devrait ne contenir que des éléments qui caractérisent les employés, tels que le nom, le prénom, la date de naissance ou le matricule.
Or, le responsable d'un employé ne dépend pas seulement de l'employé mais aussi du service dans lequel cet employé est affecté.
Il faut donc connaître le service d'affectation, qui dépend de la date considérée, et, à cette date, vérifier quel est le responsable du service, le responsable pouvant lui aussi changer en fonction de la date.
À un instant "t" , un personnel n'est affecté qu'à un seul service, et à un instant "t", un service ne peut avoir qu'un seul responsable.
Le modèle conceptuel devrait donc être
[EMPLOYE] 1,n --- (affecter) --> 0,n [SERVICE]
.....0,n.......................│....................0,n
....../.\.....................0,n....................│
.......│....................[DATE].................│
.......│......................0,n....................│
.......│.......................│......................│
.......└-------------- (diriger) -------------┘
La flèche de l'association (diriger) vers l'entité-type [EMPLOYE] matérialise la contrainte selon laquelle un service n'est dirigé que par un seul employé à une date
Et la flèche vers [SERVICE] matérialise la contrainte selon laquelle un employé n'est affecté qu'à un seul service à une date
Ce qui donne les tables suivantes (PK soulignées, FK suffixées par #)
EM_employe(EM_ident, EM_matricule, EM_nom, EM_prenom...)
SE_service(SE_ident, SE_code, SE_libelle...)
AF_affecter(EM_ident#, DA_date#, SE_ident#...)
DI_diriger(SE_ident#, DA_date#, EM_ident#...)
Et on ajoutera une contrainte (difficile à symboliser en mode "texte", désolé, je n'ai pas d'outil de modélisation sur ce poste) pour vérifier qu'un employé qui dirige un service est bien affecté à ce service
Il serait même préférable d'utiliser le terme "PERSONNEL" plus générique que "EMPLOYE" puisque les infos relatives aux employés sont communes avec celles des ouvriers et des cadres.
Partager