IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ALM Discussion :

MCD gestion de l'horaire sur semaine1/semaine2


Sujet :

ALM

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    décembre 2018
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 136
    Points : 72
    Points
    72
    Par défaut MCD gestion de l'horaire sur semaine1/semaine2
    Hello,

    J'ai un peu du mal à conceptualiser

    En fait, dans mon appli, j'aimerais pouvoir afficher/modifier l'horaire des employés
    sauf que... Dans notre cas, on n'a pas un modèle d'horaire fixe. Des employés vont commencer à 9h36 et finir à 11h un jour, puis faire un 8h30-12h/12h30-18h, puis... bref, plein plein plein de possibilités
    L'intérêt ici est, depuis l'application, pouvoir afficher et changer l'horaire des employés (comme expliqué, ça peut vraiment être tout et n'importe quoi)

    Et en bonus, l'horaire en semaine 1 est différent de l'horaire en semaine 2


    Je n'ai pas spécialement besoin de traiter cette donnée, c'est vraiment stocker l'horaire pour permettre la visualisation et la modification mais j'aimerais quand même que ce soit propre dans la bdd

    pour donner une idée, actuellement l'horaire des employés est noté sur une page html et je dois modifier manuellement la page html à chaque modification d'horaire et je suis le seul à pouvoir le faire
    le but est de pouvoir déléguer cette tâche sans toucher aux fichiers/bdd de l'appli

    L'appli ne se veut pas être un logiciel de RH, c'est vraiment un petit intranet pour choper les infos rapidement et voilà

    Là j'ai pensé à un truc comme ça mais ça me paraît vraiment éclaté
    Nom : mcd.png
Affichages : 41
Taille : 31,5 Ko

    Merci pour vos suggestions !

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    décembre 2018
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    En fait je me suis rendu compte que les horaires sont tellement wtf qu'on peut considérer que chaque employé a un horaire unique

    Est-ce qu'il y a un monde où s'orienter dans cette direction est mieux?

    MCD:
    Nom : mcd.png
Affichages : 28
Taille : 27,5 Ko

    MLD:
    Nom : mld.png
Affichages : 26
Taille : 32,3 Ko

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 988
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 988
    Points : 33 671
    Points
    33 671
    Billets dans le blog
    3
    Par défaut
    Bonjour Peyau et bienvenu sur ce forum.


    Citation Envoyé par peyau Voir le message
    le but est de pouvoir déléguer cette tâche sans toucher aux fichiers/bdd de l'appli
    C'est paradoxal : si le MCD évolue, on en dérivera un nouveau modèle tabulaire ce qui impactera obligatoirement la base de données et par conséquent tous les traitements qui exploitent la partie concernée de cette base de données.

    Ici, il s'agit d'enregistrer pour chaque employé des dates et heures de début et de fin d'intervention, dates et heures qui peuvent être très différentes d'un employé à l'autre.
    Le modèle que vous proposez ne convient pas, il faut répéter les périodes autant que nécessaire comme suit :

    Nom : MCD.png
Affichages : 18
Taille : 35,5 Ko

    La période travaillée est identifiée relativement à la personne d'où le (R) près des cardinalités.
    Ca signifie qu'au niveau tabulaire et donc SQL, l'identifiant de la période travaillée hérite de l'identifiant de la personne PE_ident, complété d'un numéro de séquence TR_seqn pour composer la clef primaire.
    On ajoutera une contrainte CHECK pour vérifier que la date et heure de fin de la période travaillée est supérieure à la date et heure de début.
    Et on enregistrera autant de lignes nécessaires qu'il y a de périodes travaillées pour la période.
    Le numéro de semaine ne sera pas stocké, ce serait une redondance avec risque d'erreur en cas de modification de la date de début. On le calculera à partir de la date de début quand c'est nécessaire (avec probablement des règles de gestion à prévoir si une période travaillée chevauche deux semaines).
    On vérifiera également (TRIGGER) qu'il n'y a pas de chevauchement entre deux périodes pour une même personne.

    Le MLD correspondant est le suivant :

    Nom : MLD.png
Affichages : 18
Taille : 39,2 Ko

    Et le script DDL ici décliné pour PostGreSQL :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE TABLE PE_personne(
       PE_ident SERIAL,
       PE_matricule CHAR(6) NOT NULL,
       PE_nom VARCHAR(50) NOT NULL,
       PE_prenom VARCHAR(50) NOT NULL,
       PE_ddn DATE NOT NULL,
       PRIMARY KEY(PE_ident),
       UNIQUE(PE_matricule)
    );
     
    CREATE TABLE TR_travail(
       PE_ident INTEGER,
       TR_seqn SMALLINT,
       TR_dthdeb TIMESTAMP NOT NULL,
       TR_dthfin TIMESTAMP NOT NULL,
       PRIMARY KEY(PE_ident, TR_seqn),
       FOREIGN KEY(PE_ident) REFERENCES PE_personne(PE_ident)
    );

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    décembre 2018
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : décembre 2018
    Messages : 136
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par peyau Voir le message
    Bonjour et merci pour la réponse

    Ce que je voulais dire par là, c'était de pouvoir effectuer la modification depuis l'application sans aller effectuer de modifications dans les fichiers ou la bdd manuellement
    Je me suis peut-être mal exprimé, désolé

    Dans mon cas, je ne dois pas avoir la date dans la base de données car ce n'est pas une intervention datée ou un planning
    Un employé dispose d'un horaire en semaine 1 et un horaire en semaine 2, puis c'est répété sur le reste de l'année et c'est seulement cet horaire que je veux pouvoir afficher et modifier

    Merci pour les précisions en tout cas
    Je pense avoir compris et je vais tenter d'améliorer ça !

Discussions similaires

  1. Avis sur MCD gestion tournoi tennis
    Par tiB_chZ dans le forum Looping
    Réponses: 6
    Dernier message: 13/12/2021, 20h23
  2. probleme sur un mcd (gestion de contingent de chambre)
    Par lofoman dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/11/2008, 13h43
  3. [MCD]Gestion des droits sur des forums
    Par Vivian Pennel dans le forum Schéma
    Réponses: 1
    Dernier message: 01/05/2007, 17h43
  4. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 14h01
  5. [BEST_PRACTICE][Merise] MCD & gestion de date
    Par Seb7 dans le forum Schéma
    Réponses: 4
    Dernier message: 16/04/2003, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo