Bonjour,
Derrière ce titre sans très peu claire, se cache en fait quelque chose d'assez simple à expliquer.
Objectif du projet : pouvoir planifier un horaire de travail aux employés actuels et futurs d'un magasin.
Dans un premier temps, tout a été discuté sans jamais évoqué la possibilité de planifié un horaire pour une personne "inexistante" (il est évident qu'elle existe quelque part mais d'un point donnée, dans ma DB, c'est le néant à son sujet).
La modélisation s'est donc faite comme indiqué dans la pièce jointe "mcd.png".
(Je ne me suis pas embêté à mettre les cardinalités car, même si ça fonctionne maintenant depuis un mois sans encombre, je me rends compte qu'il y a des problèmes de modélisation que je n'avais pas réaliser sur le coup.
Les données incluant des données temporelles, cela touche à la 6e forme normale que je ne maitrise pas encore (d'où les erreurs de modélisation).
Mais là n'est pas le sujet. Ca fonctionne et mon boss et les utilisateurs sont contents.)
Un employé peut donc être un chef d'équipe et appartenir à une ou plusieurs équipes. Un chef d'équipe dirige une ou plusieurs équipe (ce qui est assez logique ) et établit les plannings qui sont donnés aux employés.
Le fait de ne pas relier les plannings aux équipes ni même au chef est volontaire. Cela permet une gestion plus aisée des employées qui seraient dans plusieurs équipe. De cette manière, lorsqu'un chef désire créer un planning pour un employé, il reçoit automatiquement ce qui a déjà été planifié par cet employé. Cela évite à un employé de se retrouvé avec un planning lui demandant d'être à deux endroits en même temps .
Jusqu'ici donc, pas de souci. Là où ça se complique, c'est qu'on me demande à présent de pouvoir établir un planning sur des personnes fictives. En effet, un magasin doit établir les plannings de son personnel 4 semaines à l'avance. Or, pour des périodes de grandes affluences (comme les soldes par exemple), un magasin a recours à du personnel supplémentaire qu'il engage parfois seulement 2 à 3 jours seulement avant le début effectif de cette personne. Etant donné les données sur les employés proviennent du département HR, il est évident que ce personnel supplémentaire ne figure nulle part dans mes données et qu'il est donc impossible de lui attribuer un planning.
L'idée serait donc de créer des personnes "anonymes" (fictives en fait), de leur attribuer un planning et que, lorsque la personne, a qui se planning sera donné, sera connue du système (ie. introduite dans la DB via les RH), il soit possible de lui dire que l'anonyme X devient en fait l'employé 1234. Cette affection serait faite par un responsable dans le magasin.
J'ai déjà envisagé plusieurs scénarios mais ils débouchent tous inévitablement sur une modification de la cléf primaire de l'une ou l'autre table et conduisent à ce que l'utilisateur tente de violer les contraintes d'intégrité référentielles. Bref, ça ne va pas...
Je viens donc chercher des pistes de modélisation. Je ne demande pas de solution "clef sur porte". Juste une piste.
Il est tout de même sans doute nécessaire que la table des employés est mise à jour par un batch de nuit. Je reçois les données de notre secrétariat social, mets à jour les employés existant et insère les nouveaux.
Merci d'avance pour vos suggestions pour simplement d'avoir pris la peine de lire ce message.
Partager