Dénormalisation des données

Transformer et analyser des données avec Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Qu'est-ce que la normalisation ?

  • Organiser les données pour réduire la redondance et renforcer l'intégrité
  • Fondé sur des principes définis en 1970 par Tedd Codd, inventeur du modèle relationnel
  • Troisième forme normale (3NF) : les attributs non clés dépendent uniquement de la clé primaire
Transformer et analyser des données avec Microsoft Fabric

Qu'est-ce que la normalisation ?

  • La normalisation s'obtient en utilisant des clés et de nouvelles tables pour remplacer des attributs qui, sinon, créeraient de la redondance.

 

Schéma illustrant la division d'une table en trois pour réduire la redondance

Transformer et analyser des données avec Microsoft Fabric

Exemple de normalisation

Table d'exemple contenant des titres de jeux vidéo avec leurs éditeurs et genres. Ligne d'exemple : titre Gran Turismo, éditeur Sony, genre Course

  • Beaucoup de textes dupliqués pour les valeurs de publisher et genre.
Transformer et analyser des données avec Microsoft Fabric

Exemple de normalisation

Table d'exemple contenant des titres de jeux vidéo avec leurs éditeurs et genres. Les descriptions textuelles des éditeurs et genres ont été déplacées dans des tables séparées et les textes de la table Games remplacés par des ID numériques référençant ces tables maîtres

  • Les valeurs textuelles de publisher et genre n'apparaissent plus qu'une fois.
  • Les clés numériques remplaçant publisher et genre dans la table Games prennent moins de place
Transformer et analyser des données avec Microsoft Fabric

Dénormalisation

  • La dénormalisation utilise la redondance pour aplatir le modèle de données ; c'est l'inverse de la normalisation
  • Elle mène à moins de tables, au prix d'une redondance accrue

Schéma illustrant la fusion de plusieurs tables en une seule

Transformer et analyser des données avec Microsoft Fabric

Quand utiliser la normalisation ?

  • Systèmes transactionnels OLTP

    • Optimiser les écritures (insertions, mises à jour, suppressions individuelles)
    • Assurer l'intégrité des données
  • Tables de faits

    • Des millions de lignes
    • Réduire l'espace de stockage
    • Rendre le modèle plus simple à comprendre
    • Base du schéma en étoile

 

Schéma en étoile, mettant en évidence la table de faits

Transformer et analyser des données avec Microsoft Fabric

Quand utiliser la dénormalisation ?

  • Tables de dimensions
    • Généralement bien plus petites que les tables de faits
    • Redondance = Moins de jointures = Requêtes plus rapides
    • Les gains de performance dépassent le coût du stockage redondant
    • Le schéma en étoile est plus simple que le flocon de neige

 

Schéma en étoile, mettant en évidence les tables de dimensions

Transformer et analyser des données avec Microsoft Fabric

Mettre en œuvre la dénormalisation

 

 

Icônes représentant trois outils : SQL, Spark et Dataflows

Transformer et analyser des données avec Microsoft Fabric

Dénormaliser avec SQL

  • Instruction SELECT + JOIN
-- [dim_videogames]: Videogames table
-- [dim_genres]: Genres table
-- [dim_publishers]: Publishers table

SELECT game_id, title, gen.genre, pub.publisher
FROM dim_videogames_norm vidg
JOIN dim_genres gen
  ON vidg.genre_id = gen.genre_id
JOIN dim_publishers pub
  ON vidg.publisher_id = pub.publisher_id
Transformer et analyser des données avec Microsoft Fabric

Dénormaliser avec Spark

  • DataFrame join( ) et select( )
# [videogamesDF]: Videogames DataFrame
# [genresDF]: Genres DataFrame
# [publishersDF]: Publishers DataFrame

videogames1DF = videogamesDF.join(genresDF, ["genre_id"])
videogamesdenormDF = videogames1DF.join(publishersDF, ["publisher_id"])
videogamesdenormDF.select("game_id", "title", "genre_id", "publisher_id").show()
Transformer et analyser des données avec Microsoft Fabric

Dénormaliser avec Dataflows

  • Utiliser des requêtes pour charger les données
  • Utiliser les transformations Merge queries ou Merge queries as new pour joindre les requêtes

Capture d'écran d'un Dataflow utilisant Merge queries as new pour joindre les requêtes videogames, genres et publishers

Transformer et analyser des données avec Microsoft Fabric

Passons à la pratique !

Transformer et analyser des données avec Microsoft Fabric

Preparing Video For Download...