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

Schéma Discussion :

Conseil pour un mcd de gestion de salaire [MCD]


Sujet :

Schéma

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Par défaut Conseil pour un mcd de gestion de salaire
    Bonjour,
    je suis un étudiant en stage de fin d’étude (mon premier outch ! ) et je dois établir un mcd pour mon programme et la je dois avouer que j’ai quelques problèmes pour l’élaboration, je vous expose mon problème :

    je dois grâce au programme, déterminé l’argent qu’il faudra sur une période donnée pour pouvoir payer tous les employés d’une entreprise :
    chaque employé possède un statut, dans ce statut il y a des niveaux, dans ces niveaux il y a des grades et dans ces grades il y a des échelons. Cela détermine un nombre de point.
    Les niveaux, grades et échelons peuvent changer en fonction des mois (donc les points !) .

    Les points de chaque employé en fonction du mois seront saisies par le gestionnaire (le niveau, le grade et l’échelon sont donc la pour information mais ils doivent apparaître)

    Ensuite je dois calculer le traitement brut de chaque employé chaque mois en fonction du nombre de point, de la valeur du point (qui peut changer en fonction des mois aussi) et si l’employé est en temps partiel ou non :
    traitementbrut = (nombredepoint*valeurdupoint*numérateur)/dénominateur

    exemple : si le point vaut 100, un employé travaillant a mi-temps (le numérateur vaudra 1 et le dénominateur 2) ayant 200 point gagnera :

    (200*100*1)/2 = 10 000 € (ce qui est plutôt honnête pour un mi-temps ^^)


    Au traitement brut viennent s’ajouter tous les mois et parfois qu’une seule fois dans la période, différentes indemnités (je met seulement trois de ces indemnités mais il y en a d’autre …) :

    NBI : qui est un calcul d’un nombre de point (entré par le gestionnaire) * valeur du point
    SFT : un chiffre entrer par le gestionnaire
    Travaux insalubre : un pourcentage du traitement brut (sachant que le pourcentage peut changer en fonction des mois)

    Le problème c’est que en fonction de la personne on n’aura pas le même calcul du complément de traitement

    par exemple pour un employé normal :
    ComplémentTraitement = NBI + IAT + travauxinsalubre

    Et pour un vacataire on aura juste :

    ComplémentTraitement = NBI

    de plus le NBI diffère selon les personnes

    ensuite je dois calculer pour chaque mois le total de chaque personne c'est-à-dire :

    Totalpersonne = traitementbrut + ComplémentTraitement


    Je ne vois pas comment modéliser le fait que si la personne est un vacataire ou un « employé normal » les indemnités ne seront pas les même
    Ni le fait que le pourcentage du calcul des travaux insalubre peut changer en fonction des mois.
    excusez moi pour la longueur mais j'essaie d'être précis...
    Voila un essai de modélisation, sans doute faux mais je suis un peu perdu…

    d’avance
    Images attachées Images attachées  

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Par défaut
    Bonjour holoo,

    Bon, manifestement tu es parti sur une mauvaise piste. Ceci dit, le sujet est quand même assez compliqué.
    Je pense que tu as confondu Données et Traitements (calculs, en l'occurrence). Quand tu modélises la partie statique (MCD) de ton sujet, il faut uniquement penser aux données sans préjuger de la manière dont tu vas les utiliser pour les traitements (calculs).
    Par exemple, possède associe pas moins de 7 entités (!) car tu as probablement pensé que tu as besoin de toutes ces informations pour effectuer les calculs.

    Voici quelques exemples d'occurrences de l'association possède telle que tu l'as modélisée. Pour l'exemple je n'utilise qu'une partie des entités quelle met en relation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    idPersonne idNiveau idGrade idEchelon ...
    ---------- -------- ------- --------- ---
    p01        I        1       1
    p01        I        1       2
    p01        I        2       1
    p01        II       1       3
    p01        II       1       1
    p01        II       2       1
    p01        III      1       1
    Il est évident que la personne identifiée par "p01" ne peut pas avoir autant de niveaux, grades et échelons à la fois. Ce serait même plutôt une seule combinaison de ces 3 valeurs (en tout cas, c'est ce qu'il y a sur ma feuille de paie).

    Donc, il faut raisonner différemment. Il faut établir les liens entre les entités indépendemment des calculs à effectuer.

    Pour l'exemple ci-dessus, on peut déclarer :
    • une personne a un et un seul niveau
    • une personne a un et un seul grade
    • une personne a un et un seul échelon

    Ce qui se traduit dans le MCD par :

    [ Personne ]--1,1----(a un)----0,n->[ Niveau ]
    [ Personne ]--1,1----(a un)----0,n->[ Grade ]
    [ Personne ]--1,1----(a un)----0,n->[ Echelon ]


    Repense ton MCD en gardant ces principes en tête et poste-le de nouveau quand tu l'auras refait.
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    :!: Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur :resolu:

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Par défaut
    Tout d'abord Merci de ta réponse,
    Mais justement une personne doit pouvoir avoir différent grade, niveau et échelon car au cours d’une année cette personne peut en changer vu que je dois faire la somme du calcul prévisionnel des salaires d’une personne sur un période donnée et c’est bien ici que je m’arrache les cheveux : presque tout peut changer en fonction du temps..

    Par exemple :
    un employé dont on sait qu’il aura des promotions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    idPersonne idNiveau idGrade idEchelon Date       NbPoint  . . .
    ---------- -------- ------- --------- ---        -------  -----
    p01        I        1       1		01 /01/09  150	
    p01        I        1       2		01 /09/09  160
    p01        I        2       1		01 /12/09  180
    Si je dois calculer le cout total de la personne sur l’année 2009 je dois prendre en compte ces changements...
    Donc j'étais sur le bon chemin ? Ou dois-je mettre les cardinalités 0,1?


    EDIT :
    J'ai modifié un peu le MCD pour différencier le niveau et le salaire je sais pas si c'est une bonne idée
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Par défaut
    Bonsoir,

    Citation Envoyé par holoo Voir le message
    Mais justement une personne doit pouvoir avoir différent grade, niveau et échelon car au cours d’une année cette personne peut en changer [...]
    D'accord. Mais je maintiens qu'à un instant donné, une personne a un seul Niveau, Grade et Echelon (triplet que j'appellerai "indice").


    La précision que tu apportes est importante... et un peu plus précise que ta première formulation qui était :
    Citation Envoyé par holoo
    Les niveaux, grades et échelons peuvent changer en fonction des mois
    En poussant le bouchon, on pourrait penser qu'au mois de janvier p01 est en position "I.1.1", au mois de juin il est "I.1.2" et au mois de janvier de l'année suivante, il redevient "I.1.1". Ce qui se formule ainsi : le niveau/grade/échelon change en fonction du mois.

    Ceci pour insister sur le fait qu'il faut toujours être très précis quand on formule des règles de gestion. Il ne faut pas hésiter à reprendre les formulations jusqu'à obtenir des phrases décrivant exactement la réalité à modéliser, en utilisant les termes appropriés. Lorsque ce travail est terminé, le modèle est quasiment fini avant même d'avoir tracé le moindre rectangle ou ovale.
    Je referme la parenthèse.


    Donc, ce que tu veux exprimer, c'est que tu as besoin de l'historique des changements d'indice des personnes. Pour cela, il faut "dater" chaque changement d'indice, comme représenté ci-dessous :
    Citation Envoyé par holoo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    idPersonne idNiveau idGrade idEchelon Date       NbPoint  . . .
    ---------- -------- ------- --------- ---        -------  -----
    p01        I        1       1		01 /01/09  150	
    p01        I        1       2		01 /09/09  160
    p01        I        2       1		01 /12/09  180
    Pour ceci, la représentation de ton MCD est un peu complexe. En effet, il faudrait faire intervenir la date de changement pour chacune des 3 entités Niveau, Grade et Echelon. Je te propose donc de tricher un peu en créant une entité fictive Indice regroupant ces 3 notions.

    La modélisation correspondante est :

    [ Personne ]--1,n----( Avancement )----0,n--[ Indice ]

    [ Indice ]--1,1----(a un)----0,n->[ Niveau ]
    [ Indice ]--1,1----(a un)----0,n->[ Grade ]
    [ Indice ]--1,1----(a un)----0,n->[ Echelon ]


    L'identifiant de Indice peut être une propriété créée pour le besoin (ex. idIndice) mais cette entité peut aussi être identifiée de manière relative par rapport aux 3 entités Niveau, Grade et Echelon. L'identifiant de Indice est alors la concaténation des identifiants de ces 3 entités.


    L'association Avancement contient une propriété Date_avancement à laquelle le changement d'indice a eu lieu. Le nombre de points saisi par le gestionnaire trouve naturellement sa place dans cette association à condition que, pour un indice donné, le nombre de points soit variable d'une personne à l'autre. Si ce n'est pas le cas, et donc si le nombre de points correspondant à un indice donné est identique pour tout le monde, la propriété NombreDePoint doit se situer dans l'entité Indice.


    C'est tout pour aujourd'hui...


    JPhi33
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    :!: Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur :resolu:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/03/2009, 10h41
  2. Passage MCD complexe à MLD, conseil pour le MCD
    Par Kalion dans le forum Schéma
    Réponses: 9
    Dernier message: 22/10/2008, 13h41
  3. Réponses: 6
    Dernier message: 14/10/2006, 20h05
  4. [SGBD Libres] Conseils pour un projet de logiciel de gestion
    Par nh2 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 30/01/2006, 08h24

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