Bonjour à tous,

Je bloque actuellement sur la modélisation d'une base de reporting et notamment sur les dimensions. La difficulté est assez simple à saisir : la base de données opérationnelle (et donc le logiciel qui est pluggé dessus) utilise la notion de "tag".

Voici un exemple avec un loueur de voiture pour que vous compreniez :

table voiture

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
voiture_id;voiture_name 
1;voiture_1
2;voiture_2
3;voiture_3
Ces voiture peuvent être taggées afin de préciser leurs caractéristiques

table tag_voiture

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
voiture_id,tag_id,tag_name
1;1;Bleu
1;2;Allemagne
1;3;bon etat
2;4;rouge
2;2;Allemagne
2;3;bon etat
3;1;Bleu;
3;5;France
3;6;Abimée
Nous disposerons d'une table de fait dans laquelle, tous les jours, on pourra suivre ce qu'a rapporter chaque voiture.

Je veux être en mesure de générer ce genre de reporting :

  • Combien m'ont rapporté les voiture allemande ?
  • Combien m'ont rapporté les voitures bleu ?
  • Combien m'ont rapporté les voitures française dans un bon état ?
  • Combien m'ont rapporté les voiture allemande rouge ?
  • etc..


Ne vous fiez pas à l'exemple sur le fait que les tags peuvent être typés, on part du principe que non, les données peuvent être tout autre, c'est un tag, les gens mettent ce qu'ils veulent.

Le problème est que j'ai du mal à imaginer quelle table de dimension pourrait fonctionner pour que les requêtes soient efficaces surtout que chaque voiture peut avoir de 0 à n tag, je ne peux donc pas créer une table de dimension contenant un nombre défini de colonnes ( 3 dans mon exemple ) dans laquelle je mets tag 1, tag 2 etc...

Histoire de rajouter un peu de difficulté, ces tags peuvent évoluer pour une voiture donnée et il est donc possible que nous ayons besoin de gérer l'historisation (à voir avec quel type de gestion, pas encore décidé). Ce n'est pas encore sûr pour l'historisation, notamment en fonction de la difficulté à modéliser sans gestion d'historique et du fait que la table de fait pourra contenir plusieurs millions de lignes.

Merci d'avance pour vos suggestions !