Hier j’ai lu à notre fille l’histoire de Cendrillon en version des Frères Grimm. Et il y a un moment où Cendrillon demande sa belle-mère la permission d’aller au bal et la vilaine dame verse un plat de lentilles dans les cendres et demande de les trier avant d’aller s’amuser. C’est ainsi que 3 siècles avant l’apparition des bases de données, les gens souffraient déjà du problème de granularité. Disons, que c’était beaucoup plus facile pour Cendrillon si sa belle-mère aurait choisi un plat avec des pommes et des patates. Et si j’écoute mon mari, le temps passe mais il y en existe toujours plein de gens qui ont des problèmes avec la notion de granularité. Alors aujourd’hui je me donne le nouveau défi de comprendre cette notion technique et vous l’expliquer de façon facile.

Comme d’habitude je regarde la définition de granularité sur Internet : « Granularité est le niveau de détail. Plus la granularité est élevé, plus les données sont détaillées, plus l’analyse est fine ». Et plus concrètement pour les bases de données : « Granularité est le niveau élémentaire qui peut être décrit par une ligne d’une table ».
Pour l’instant tout est clair. Si je veux acheter cela :

Je vais sur le site comme Zalando, je choisis « produits \ chaussures \ femme \ boots \ Dr Martens ».
Bref, vous avez compris : la granularité de « Dr Martens » est plus fine que celle de « chaussures ». Donc Zalando peut avoir une table avec la granularité « type de produit » dont les lignes seront par exemple : « chaussures », « pulls », « robes », etc. Et Zalando peut avoir une autre table dans sa base de données avec la granularité « boots », « sandales », « escarpins », etc. Et ces deux tables vont avoir la granularité différente.
Et moi, j’ai compris que je veux une paire de Dr Martens 😉
De la même manière, si nous passons aux exemples plus réalistes, une société peut avoir une table appelée « factures » (à gauche) avec les colonnes : « référence de facture », « date de facture», « client ID » et « prix ». Et dans cette table une ligne de table sera une facture avec l’information sur la date, le client, le prix HT et TTC mais sans les détails concernant les produits achetés avec cette facture (référence, description de produit, quantité, prix unitaire, etc).

En même temps notre société peut avoir une autre table que s’appelle… suspense…. «factures » ! Oui-oui, elle aussi sera appelé « factures » (c’est la table à droite) mais chaque ligne de cette deuxième table va contenir un produit avec toutes ses détails (référence, description de produit, quantité, prix unitaire, etc). Ainsi dans la table à gauche vous trouverez le référence de la facture qu’une seule fois et dans la table à droite vous trouverez le même référence autant de fois qu’il en aura de produits achetés avec cette facture.

Autrement dit la même facture (ci-dessous) va prendre une ligne dans la table à gauche (avec l’info en bleu) et 3 lignes dans la table de droite (avec l’info en rouge). Parce que la granularité de ces deux tables n’est pas la même.
Maintenant je comprends mieux mon mari quand il partage son désarroi. Parce que cette exemple est justement pris de son expérience personnelle et vous savez ou est la blague ? Au début la demande du client était de sortir la table avec la granularité au niveau de détail de facture (en rouge), ensuite le client a dit que c’était tout faux et il valait la granularité au niveau de factures (donc, en bleu) et enfin après des heures et des heures de réunions, mon mari a découvert que la granularité de cette table devrait correspondre à “une version de l’entête de facture produite”.
Si vous voulez avoir plus d’exemples pratiques et insolites, je vous invite à visiter ce site : https://ithealth.io/problemes-de-modelisation-granularite/ pour la lecture plus que passionnante.
Et moi, je veux finir par une blague sur le sujet des clients et de la granularité.
Dans un magasin après Covid un client (C) et un vendeur (V) discutent :
C – Je prendrais ce melon mais pouvez-vous l’emballer dans un sac ?
V – Bien sûr. Ça sera tout ?
C – Non, pouvez-vous également me peser 1kg de pommes et chaque pomme emballer dans un papier ?
V – OK. Ça sera tout ?
C – Et encore 0.5kg de noix et chaque noix emballer dans un papier ?
V (commence à s’énerver) – Quelle que chose d’autre ?
C – Et ça, dans un bocal en haut. Qu’est-ce que c’est ?
V – Ce sont des graines de sarrasin mais ELLES NE SE VENDENT PAS.
Conclusion : Ecoutez vos clients mais ne les laissez pas faire n’importe quoi.
Howdy! This post could not be written much better!
Looking at this post reminds me of my previous roommate!
He constantly kept talking about this. I most certainly will send this
post to him. Fairly certain he’ll have a very good read. I appreciate you for sharing!