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

Symfony PHP Discussion :

Schéma de base de données [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Ingénieur d'études et de développement
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur d'études et de développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut Schéma de base de données
    Bonjour,

    je suis face à un problème que je n'arrive pas à résoudre malgré de l'aide de plusieurs personnes s'y connaissant en base de données.

    Voici le sujet.

    Je souhaite réaliser une application pour suivre les activités de personnes.
    Pour ce faire je dispose de plusieurs tables : Projet, release, catégorie, item, data, rapport et user. J'ai omis quelques tables annexes sans importance pour notre problème.

    Ces tables sont liées comme suit :

    Un projet est unique et peut contenir plusieurs releases.
    Une release est contenue par un seul projet.

    Une catégorie peut appartenir soit à une release et par conséquent à un projet, soit à un projet mais sans appartenir à une release, soit à rien.

    Un item appartient à une ou plusieurs catégorie.
    Une catégorie contient plusieurs items.
    Dans l'ensemble toutes les catégories et les items associés sont créés dans la base par l'admin et ne seront utilisés qu'en consultation.
    Voici un exemple concret :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Requirement management -> Product analysis
    Requirement management -> Gathering requirements
    Un point difficile est une catégorie que l'on peut créer, que l'on nomera feature et qui contient toujours les 5 même éléments. Lorsque l'on créer une feature il faut lui associer ces items.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Feat1 -> analysis
    Feat1 -> implementation
    ...
    Feat2 -> analysis
    Feat2 -> implementation
    ...
    Ces items sont liés à des data.
    Une ligne data pointe vers un seul item et un item peut être pointé par plusieurs data. Les data changent chaque semaine et sont rentrées par l'utilisateur qui les possède.

    Le rapport est une sorte de conteneur qui pointe vers des items et des data pointent vers lui.
    Il y a un rapport par semaine par utilisateur. Ce rapport pointe vers plusieurs items et plusieurs data pointent vers lui. Le double pointage me permet d'afficher les items qui contiennent des data et ceux qui n'en contiennent pas.
    Le rapport pointe également vers un user.

    L'objectif principal de l'application et de présenter une sorte de fiche à l'utilisateur pour la semaine en cours. Elle lui présente les projet, release, catégories, items, data le concernant.

    Voici un exemple :

    Code : 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
    19
    Project SaoPolo
      Release SaoPolo 1.1
        Catégorie1
          Item1
          Item2   Data associée à cet item, pour cette release et ce projet
        Categorie4      //l'utilisateur n'a pas d'item pour les catégories 2 et 3      
          Item7  Data
      Release SaoPolo 1.2    // nouvelle release pour le même projet
       Catégorie1
          Item1
          Item5   Data associée à cet item, pour cette release et ce projet
        Categorie2      //dans cette release il a des items dans la catégorie 2      
          Item5  Data
    Support Porject SaoPolo    //catégorie ne pointant pas vers une release mais vers le projet lui même
      Catégorie12
        Item24
        Item26
    Absences  //Categorie ne pointant vers aucun projet et aucune release, elle est personnelle à l'utilisateur
      Item32   Data

    Pour le moment j'ai gérer mes relation n-n avec des tables de mapping. Mais lorsque je veux récupérer les données pour un utilisateur sur une semaine précise je ne récupère pas les données voulues.
    Si un utilisateur possède des item sur 2 releases différentes je récupère les items indifféremment des releases

    Faut-il que j'utilise des relations ternaires? Je ne sais pas si Doctrine les gère?

    Merci d'avance si vous vous penchez sur mon problème parce que je commence à être à court d'idée.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Salut, quelques questions au cours de la lecture.

    Tu dis : "Une catégorie peut appartenir soit à une release et par conséquent à un projet, soit à un projet mais sans appartenir à une release, soit à rien." doit on comprendre qu'une catégorie ne peut appartenir à deux projets ? Qu'une catégorie déclarer dans un projet ne peux revenir dans aucune release du dit projet ? Et dans ce cas, qu'est-ce qu'une catégorie qui n'appartient à rien, à quoi sert-elle ?


    Tu dis ; "Un point difficile est une catégorie que l'on peut créer, que l'on nomera feature et qui contient toujours les 5 même éléments. Lorsque l'on créer une feature il faut lui associer ces items." ce qui contredit : "Dans l'ensemble toutes les catégories et les items associés sont créés dans la base par l'admin" qui contredit le paragraphe précédant. Pourrais-tu éclaircir ?

    J'en suis à mon premier gramme de paracétamol et perdu au millieu d'une bande de data qui attaque à coup d'item...

    Je pense qu'avec le rapport, je vais aller chercher un deuxième gramme.

    Bon je fixature, mais c'est un peu léger.

    Pourrais-tu mettre le schema.yml et si tu avais un MPD ou un MLD... je prend aussi. Je peux aussi avoir un peu de paracétamol ?

  3. #3
    Membre éprouvé
    Ingénieur d'études et de développement
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur d'études et de développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Tout d'abord merci de te pencher une fois de plus sur mon problème, qui à moi aussi a fait ingurgiter pas mal de doliprane ^^

    Pour les catégories, voici les schémas possibles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    -> veut dire appartient
     
    categorie -> release x -> projet y
    categorie -> projet y
    categorie -> aucune release et aucun projet car elle est rataché à un utilisateur, ce sont les activités d'absences et organisationnelles qui n'ont rien à voir avec des projets. Mais dans la réalité je les ais relié à une release 'absences' et à un proejt 'perso' donc en effet, une catégorie n'est jamais relié à rien.
    Les seules catégories qui peuvent être créer par certains utilisateurs sont les features. Les catégories et les items sont présents par défaut dans la base et servent de templates pour la création de projets.

    J'ai réussi à régler mon problème en ajoutant des clés étrangères sur projet, release et catégorie dans la table de mapping entre rapport et items.

    Mon problème principal était le fait que je pointait l'id d'un item dans mon rapport, or cet item pouvait lui-même être rattaché à plusieurs features. Du coups avec mes jointures, Doctrine ne savait pas quelle feature ramener, donc il me ramenait l'ensemble des features ^^
    Maintenant grâce à mes clés je pointe précisément un item, sur une catégorie, une release et un projet.
    Ca fait pas mal de clés à gérer et j'en suis conscient mais je pense que c'est la seul solution car la suite de relation n-n m'y oblige.

    En tout cas ça fonctionne et les performances sont correctes.

    Merci Mimi68

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je suis heureux que tu ais une solution.

    Et je fuis le sujet avant que d'être obligé de retourner à la pharmacie !

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

Discussions similaires

  1. Outil de suivi du schéma de base de données
    Par phamdac dans le forum Outils
    Réponses: 2
    Dernier message: 08/07/2008, 15h20
  2. Réponses: 3
    Dernier message: 06/06/2008, 14h40
  3. Réponses: 1
    Dernier message: 21/03/2008, 11h59
  4. Réponses: 1
    Dernier message: 03/10/2006, 11h22
  5. Comparer deux schémas de base de données
    Par Killing Joke dans le forum Oracle
    Réponses: 1
    Dernier message: 22/02/2006, 14h25

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