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 :
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 Requirement management -> Product analysis Requirement management -> Gathering requirements
Ces items sont liés à des data.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Feat1 -> analysis Feat1 -> implementation ... Feat2 -> analysis Feat2 -> implementation ...
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.
Partager