Denormalizarea datelor

Transformă și analizează date cu Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Ce este normalizarea?

  • Organizarea datelor pentru reducerea redundanței și creșterea integrității
  • Bazată pe principiile stabilite în 1970 de informaticianul Ted Codd, inventatorul modelului relațional
  • A treia formă normală (3NF): atributele non-cheie depind doar de cheia primară
Transformă și analizează date cu Microsoft Fabric

Ce este normalizarea?

  • Normalizarea utilizează chei și tabele noi pentru a înlocui atributele care ar genera redundanță.

 

Diagramă ilustrând conceptul de împărțire a unui tabel în trei pentru reducerea redundanței

Transformă și analizează date cu Microsoft Fabric

Exemplu de normalizare

Tabel exemplu cu titluri de jocuri video, editori și genuri. Rând exemplu: Gran Turismo, Sony, Racing

  • Multe intrări text duplicate pentru valorile publisher și genre.
Transformă și analizează date cu Microsoft Fabric

Exemplu de normalizare

Tabel exemplu cu jocuri video, editori și genuri. Descrierile text au fost mutate în tabele separate, iar intrările din tabela de jocuri au fost înlocuite cu ID-uri numerice care referențiază tabelele de referință

  • Intrările text pentru publisher și genre apar acum o singură dată.
  • Cheile numerice care înlocuiesc publisher și genre în tabela Games ocupă mai puțin spațiu
Transformă și analizează date cu Microsoft Fabric

Denormalizarea

  • Denormalizarea utilizează redundanța pentru a aplatiza modelul de date; este opusul normalizării
  • Denormalizarea conduce la mai puține tabele, în detrimentul unei redundanțe crescute

Diagramă ilustrând conceptul de unire a mai multor tabele într-unul singur

Transformă și analizează date cu Microsoft Fabric

Când se utilizează normalizarea?

  • Sisteme OLTP tranzacționale

    • Optimizarea scrierilor (inserări, actualizări și ștergeri individuale)
    • Asigurarea integrității datelor
  • Tabele de fapte

    • Milioane de rânduri
    • Reducerea spațiului de stocare
    • Simplificarea modelului
    • Baza schemei stea

 

Diagramă a unei scheme stea, evidențiind tabela de fapte

Transformă și analizează date cu Microsoft Fabric

Când se utilizează denormalizarea?

  • Tabele de dimensiuni
    • De obicei mult mai mici decât tabelele de fapte
    • Redundanță = Mai puține join-uri = Interogări mai rapide
    • Performanța mai bună a interogărilor justifică stocarea datelor redundante
    • Schema stea este mai simplă decât schema fulg de zăpadă

 

Diagramă a unei scheme stea, evidențiind tabelele de dimensiuni

Transformă și analizează date cu Microsoft Fabric

Implementarea denormalizării

 

 

Pictograme reprezentând trei instrumente: SQL, Spark și Dataflows

Transformă și analizează date cu Microsoft Fabric

Denormalizare cu SQL

  • Instrucțiunea 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
Transformă și analizează date cu Microsoft Fabric

Denormalizare cu Spark

  • join( ) și select( ) pe DataFrame
# [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()
Transformă și analizează date cu Microsoft Fabric

Denormalizare cu Dataflows

  • Utilizarea interogărilor pentru încărcarea datelor
  • Utilizarea transformărilor Merge queries sau Merge queries as new pentru unirea interogărilor

Captură de ecran a unui Dataflow care utilizează Merge queries as new pentru a uni interogările videogames, genres și publishers

Transformă și analizează date cu Microsoft Fabric

Să exersăm!

Transformă și analizează date cu Microsoft Fabric

Preparing Video For Download...