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 :

Modelisation de calendrier [MCD]


Sujet :

Schéma

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut Modelisation de calendrier
    Bonjour,

    On m'a demandé de créer un système de saisi d'heure de travail.

    On m'a demandé de réaliser ce genre de chose via cet affichage:
    Nom : planning.png
Affichages : 1751
Taille : 10,1 Ko
    Mon problème est donc de modéliser ce système de façon cohérente...

    Ma première approche serait la suivante :

    - Création de la table Projets
    - Création de la table Personnes

    - Création de la table JoursTravaillés :
    *clé étrangère un idPersonne
    *clé étrangère idProjet
    *attribut Matin et ApresMidi (représentant le fait que la personne a travaillé en AM/PM).
    *attribut date


    Ma première problématique :

    Où/Comment stocker le nombre d'heures travaillées par jour ?
    (Je me vois mal créer une table avec toutes les dates de l'année effectuer une jointure sur la table Personnes pour rentrer un entier/double correspondant au nombre d'heure).
    Cela ferai 365 lignes (ptetre un peu moins) par personne par année... ça me parait être de l'overkill... Et j'ai un peu peur pour ce qui est des perfs...

    Pour créer ce genre de lignes... (Sachant que tout le monde travail entre 7h et 8h par jour)

    | idPers | date | nbHeure |
    |-----------|------------- | ------------|
    | 1 | 01/01/2015 | 8 |
    | 1 | 01/01/2015 | 7.5 |


    Je vois donc pas comment gérer ces cas la...

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Sachant que tout le monde travail entre 7h et 8h par jour
    Qu'est-ce qui détermine la durée de 7 ou 8h ?
    1) C'est lié à la personne ?
    => Xavier travaille 8h, Olivier ne travaille que 7h ?
    2) C'est lié au jour de travail ?
    => Tout le monde à les mêmes horaires : 8h du lundi au jeudi et 7h le vendredi.
    3) C'est lié au projet ?
    => Toutes les personnes travaillant sur le projet P1 travaillent 8h et celles travaillant sur le projet P2 travaillent 7h.
    4) C'est selon la déclaration de l'employé chaque jour ?


    | idPers | date | nbHeure |
    |-----------|------------- | ------------|
    | 1 | 01/01/2015 | 8 |
    | 1 | 01/01/2015 | 7.5 |
    Dans votre exemple, la même personne travaille le même jour 8h et 7,5h ! En plus c'est jour férié ! Espèce d'esclavagiste !
    Plus sérieusement, on voit une possibilité de travailler 7,5 h ou 8h. Qu'est-ce qui détermine cette quantité d'heures du jour travaillé par telle personne pour tel projet ?

    Votre besoin n'est pas assez précis pour qu'on puisse y répondre.

    Ma première approche serait la suivante :

    - Création de la table Projets
    - Création de la table Personnes

    - Création de la table JoursTravaillés :
    *clé étrangère un idPersonne
    *clé étrangère idProjet
    *attribut Matin et ApresMidi (représentant le fait que la personne a travaillé en AM/PM).
    *attribut date
    Avant de parler de tables, modélisez vos données en réalisant un MCD à partir de règles de gestion claires.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    Qu'est-ce qui détermine la durée de 7 ou 8h ?
    1) C'est lié à la personne ?
    => Xavier travaille 8h, Olivier ne travaille que 7h ?
    2) C'est lié au jour de travail ?
    => Tout le monde à les mêmes horaires : 8h du lundi au jeudi et 7h le vendredi.
    3) C'est lié au projet ?
    => Toutes les personnes travaillant sur le projet P1 travaillent 8h et celles travaillant sur le projet P2 travaillent 7h.
    4) C'est selon la déclaration de l'employé chaque jour ?
    La personne choisie, c'est une textbox qu'elle remplit avec une règle qui interdit <0 (quand je dis 7 ou 8h je parle de manière globale).
    Il s'agit là d'une autogestion, les personnes peuvent saisir ce qu'elles veulent.

    Les projets ne sont pas liés au nombre d'heures.
    Je veux enregistrer le nombre d'heures que travail une personne dans une journée en autodéclaration.

    Ce serait quelque chose comme :
    Olivier a travaillé 7h le 01/01/2015 puis 8h le 02/01/2015.


    Les projets se glissent par la suite comme étant une donnée différente qui serait :

    Olivier a travaillé sur le projet 1 et 2 le Matin du 01/01/2015
    Olivier a travaillé sur le projet 1 le Matin du 02/01/2015 puis sur le Projet 2 l’après-midi du 02/01/2015

    Les heures enregistrées sont donc séparées des projets mais dans une même interface graphique.

    Dans votre exemple, la même personne travaille le même jour 8h et 7,5h ! En plus c'est jour férié ! Espèce d'esclavagiste !
    Plus sérieusement, on voit une possibilité de travailler 7,5 h ou 8h. Qu'est-ce qui détermine cette quantité d'heures du jour travaillé par telle personne pour tel projet ?
    oops !!! Jvoulais mettre idpers 2

    Je vais travailler à modéliser mon besoin et revenir sur le topic avec un diagramme.

    Edit : Le diagramme que je pense etre bon (faudrait que je combiner les 2)

    Nom : mcd.png
Affichages : 1792
Taille : 25,6 Ko

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    J'ai celui la aussi:Nom : mcd1.png
Affichages : 1331
Taille : 17,4 Ko


    Ma question est : Comment puis-je fusionner les 2 sans faire de bêtise (la date n'est pas vraiment une table mais un attribut) ?

    Y a t'il une simplification possible ?

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Si j'ai bien compris, la personne déclare par exemple : "J'ai travaillé sur le projet P12 le 08/06/2015 pendant 7h30, le matin puis l'après-midi."

    Dès lors, tu peux rassembler toutes ces informations dans une seule association :

    MCD :
    personne -0,n----travailler----0,n- projet
    date -0,n----------------|

    Tables :
    te_personne_prs (prs_id, prs_nom, prs_prenom...)
    te_projet_prj (prj_id, prj_nom...)
    tj_prs_travailler_prj_ptp (ptp_id_personne, ptp_id_projet, ptp_date, ptp_matin, ptp_apres_midi)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    Si j'ai bien compris, la personne déclare par exemple : "J'ai travaillé sur le projet P12 le 08/06/2015 pendant 7h30, le matin puis l'après-midi."
    Non justement, le temps de travail de la journée ne doit avoir aucun lien avec le projet.
    Le temps est accroché à la journée.
    Les projets permettent de savoir juste sur quoi il a travaillé dans la journée (sans préciser le nombre d'heures).

    C'est plutôt :

    J'ai travaillé 8 heures dans la journée du 01/01/2015.
    J'ai travaillé sur le projet 1 dans la matinée du 01/01/2015 et le projet 2 dans l'après-midi du 01/01/2015

    Le résultat devrait être le suivant :
    Nom : mcd2.png
Affichages : 1272
Taille : 12,7 Ko


    Mais je ne suis pas sûr qu'il y ait mieux... je voudrais savoir si ça paraît juste...

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

    Informations professionnelles :
    Activité : Chef de projet en SSII

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

    Citation Envoyé par Lionhart Voir le message
    Non justement, le temps de travail de la journée ne doit avoir aucun lien avec le projet.
    Le temps est accroché à la journée.
    Les projets permettent de savoir juste sur quoi il a travaillé dans la journée (sans préciser le nombre d'heures).
    Dans ce cas, le dernier schéma que tu proposes est le bon.
    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

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 739
    Points : 52 451
    Points
    52 451
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Lionhart Voir le message
    ...Je me vois mal créer une table avec toutes les dates de l'année effectuer une jointure sur la table Personnes pour rentrer un entier/double correspondant au nombre d'heure).
    Cela ferai 365 lignes (ptetre un peu moins) par personne par année... ça me parait être de l'overkill... Et j'ai un peu peur pour ce qui est des perfs...
    ben si !

    1 table calendrier avec toutes les dates de 1900 à 9999 par exemple indépendante de tout autre objet
    2 des tables de jointures entre les personnes et le calendrier

    Pour ce qui est des performances c'est nettement plus performant que tout process de calcul grâce aux index ! et comme les calendriers sont des données statiques (À moins que notre cher président Hollande dans ses immenses bêtises pense à le réformer pour laisse une trace dans l'histoire...) vous pouvez créez tous les index que vous voulez sans problèmes et si vous avez un bon SGBDR (pas MySQL ni PostGreSQL) vous stockez cette table dans un storage à part en mde READ ONLY, donc, plus de verrou !

    Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/gestiontemps/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Les Meilleurs Outils de Modélisation UML ?
    Par Matthieu Brucher dans le forum Outils
    Réponses: 76
    Dernier message: 06/11/2015, 13h48
  2. Modelisation de calendrier
    Par Lionhart dans le forum Merise
    Réponses: 1
    Dernier message: 03/06/2015, 17h20
  3. Réponses: 2
    Dernier message: 21/09/2007, 12h41
  4. Delphi et XMLRAD pour un calendrier
    Par Toxine77 dans le forum XMLRAD
    Réponses: 9
    Dernier message: 23/01/2003, 14h56
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 22h29

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