Desnormalização de dados

Transforme e analise dados com o Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

O que é Normalização?

  • Organize os dados para reduzir redundância e aumentar a integridade
  • Baseada nos princípios de 1970 do cientista da computação Ted Codd, criador do modelo relacional
  • Terceira Forma Normal (3FN): atributos não-chave dependem apenas da chave primária
Transforme e analise dados com o Microsoft Fabric

O que é Normalização?

  • A normalização é feita usando chaves e novas tabelas para substituir atributos que levariam à redundância de dados.

 

Diagrama ilustrando o conceito de dividir uma tabela em três para reduzir redundância

Transforme e analise dados com o Microsoft Fabric

Exemplo de normalização

Tabela de exemplo com títulos de videogames, suas editoras e gêneros. Linha de exemplo: Título Gran Turismo, Editora Sony, Gênero Corrida

  • Muitos textos repetidos nos valores de publisher e genre.
Transforme e analise dados com o Microsoft Fabric

Exemplo de normalização

Tabela de exemplo com títulos de videogames, editoras e gêneros. As descrições textuais de editoras e gêneros foram movidas para tabelas separadas, e as entradas de texto na tabela de jogos foram substituídas por IDs numéricos que referenciam as tabelas mestres de editoras e gêneros

  • Os textos de publisher e genre agora aparecem apenas uma vez.
  • Chaves numéricas substituindo publisher e genre na tabela Games ocupam menos espaço
Transforme e analise dados com o Microsoft Fabric

Desnormalização

  • A desnormalização usa redundância para achatar o modelo de dados; é o oposto da normalização
  • Leva a menos tabelas, com mais redundância

Diagrama ilustrando o conceito de unir várias tabelas em uma

Transforme e analise dados com o Microsoft Fabric

Quando usar Normalização?

  • Sistemas transacionais OLTP

    • Otimizar para escritas (inserts, updates e deletes individuais)
    • Garantir integridade dos dados
  • Tabelas fato

    • Milhões de linhas
    • Reduzir espaço de armazenamento
    • Deixar o modelo mais simples de entender
    • Base do esquema estrela

 

Diagrama de um esquema estrela, destacando a tabela fato

Transforme e analise dados com o Microsoft Fabric

Quando usar Desnormalização?

  • Tabelas dimensão
    • Geralmente muito menores que tabelas fato
    • Redundância = Menos joins = Consultas mais rápidas
    • Melhor desempenho compensa o custo de armazenar dados redundantes
    • Esquema estrela é mais simples que o floco de neve

 

Diagrama de um esquema estrela, destacando as tabelas dimensão

Transforme e analise dados com o Microsoft Fabric

Implementando desnormalização

 

 

Ícones representando três ferramentas: SQL, Spark e Dataflows

Transforme e analise dados com o Microsoft Fabric

Implementando desnormalização com SQL

  • Comando 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
Transforme e analise dados com o Microsoft Fabric

Implementando desnormalização com Spark

  • DataFrame join( ) e 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()
Transforme e analise dados com o Microsoft Fabric

Implementando desnormalização com Dataflows

  • Use consultas para carregar dados
  • Use as transformações Mesclar consultas ou Mesclar consultas como novo para unir as consultas

Captura de tela de um Dataflow que usa Mesclar consultas como novo para unir as consultas videogames, genres e publishers

Transforme e analise dados com o Microsoft Fabric

Vamos praticar!

Transforme e analise dados com o Microsoft Fabric

Preparing Video For Download...