Denormalização é uma técnica de optimização de bases de dados na qual adicionamos dados redundantes a uma ou mais tabelas. Isto pode ajudar-nos a evitar junções dispendiosas numa base de dados relacional. Note-se que a desnormalização não significa não fazer a normalização. É uma técnica de optimização que é aplicada depois de fazer a normalização.
Numa base de dados tradicional normalizada, armazenamos dados em tabelas lógicas separadas e tentamos minimizar dados redundantes. Podemos esforçar-nos por ter apenas uma cópia de cada pedaço de dados na base de dados.
Por exemplo, numa base de dados normalizada, podemos ter uma tabela de Cursos e uma tabela de Professores. Cada entrada em Cursos armazenaria o ID do professor para um Curso, mas não o nome do professor. Quando precisarmos de recuperar uma lista de todos os Cursos com o nome do Professor, faríamos uma junção entre estas duas tabelas.
Em alguns aspectos, isto é óptimo; se um professor mudar o seu nome, só temos de actualizar o nome num único local.
O inconveniente é que se as mesas forem grandes, podemos passar um tempo desnecessariamente longo a fazer uniões em mesas.
A desnormalização, então, atinge um compromisso diferente. Sob desnormalização, decidimos que estamos bem com alguma redundância e algum esforço extra para actualizar a base de dados, a fim de obter as vantagens de eficiência de menos adesões.
Pros de Desnormalização:-
- Retrieving data is faster since we do fewer joins
- Queries to retrieving can be simpleer(and therefore less likely to have bugs),
since que precisamos de olhar para menos tabelas.
Cons de desnormalização:-
- Atualizações e inserções são mais caras.
- A desnormalização pode tornar a actualização e inserção de código mais difícil de escrever.
- Os dados podem ser inconsistentes . Qual é o valor “correcto” de um dado?
- redundância de dados requer mais armazenamento.
Num sistema que exige escalabilidade, como o de qualquer grande empresa tecnológica, usamos quase sempre elementos de bases de dados normalizadas e desnormalizadas.