Normalização vs Desnormalização
Bancos de dados relacionais são compostos de relações (tabelas relacionadas). As tabelas são compostas por colunas. Se as tabelas forem duas grandes (ou seja, muitas colunas em uma tabela), poderão ocorrer anomalias no banco de dados. Se as tabelas forem duas pequenas (ou seja, o banco de dados é composto de muitas tabelas menores), seria ineficiente para consulta. A normalização e a desnormalização são dois processos usados para otimizar o desempenho do banco de dados. A normalização minimiza as redundâncias presentes nas tabelas de dados. A desnormalização (reverso da normalização) adiciona dados redundantes ou dados de grupo.
O que é Normalização?
Normalização é um processo que é realizado para minimizar as redundâncias que estão presentes nos dados em bancos de dados relacionais. Esse processo dividirá principalmente tabelas grandes em tabelas menores com menos redundâncias (chamadas “formas normais”). Essas tabelas menores serão relacionadas entre si por meio de relacionamentos bem definidos. Em um banco de dados bem normalizado, qualquer alteração ou modificação nos dados exigirá a modificação de apenas uma única tabela. A Primeira Forma Normal (1FN), a Segunda Forma Normal (2FN) e a Terceira Forma Normal (3FN) foram introduzidas por Edgar F. Codd. A Forma Normal de Boyce-Codd (BCNF) foi introduzida em 1974 por Codd e Raymond F. Boyce. As Formas Normais Superiores (4NF, 5NF e 6NF) foram definidas, mas estão sendo usadas raramente.
Uma tabela que está em conformidade com 1NF garante que ela realmente representa uma relação (ou seja, não contém nenhum registro que está se repetindo) e não contém nenhum atributo com valor relacional (ou seja, não contém nenhum registro que esteja repetindo).e. todos os atributos devem ter valores atômicos). Para que uma tabela esteja em conformidade com 2NF, ela deve estar em conformidade com 1NF e qualquer atributo que não faça parte de nenhuma chave candidata (ou seja, atributos não primos) deve depender totalmente de qualquer uma das chaves candidatas na tabela. De acordo com a definição de Codd, diz-se que uma tabela está na 3FN, se e somente se, essa tabela está na segunda forma normal (2FN) e cada atributo na tabela que não pertence a uma chave candidata deve depender diretamente de cada chave candidata dessa tabela. BCNF (também conhecido como 3.5NF) captura algumas das anomalias que não são abordadas pela 3NF.
O que é Desnormalização?
Desnormalização é o processo inverso do processo de normalização. A desnormalização funciona adicionando dados redundantes ou agrupando dados para otimizar o desempenho. Mesmo assim, adicionar dados redundantes parece contraproducente, às vezes a desnormalização é um processo muito importante para superar algumas das deficiências no software de banco de dados relacional que podem incorrer em pesadas penalidades de desempenho com bancos de dados normalizados (mesmo ajustados para maior desempenho). Isso ocorre porque juntar várias relações (que são resultados da normalização) para produzir um resultado para uma consulta pode às vezes ser lento dependendo da implementação física real dos sistemas de banco de dados.
Qual é a diferença entre Normalização e Desnormalização?
– Normalização e desnormalização são dois processos completamente opostos.
– A normalização é o processo de dividir tabelas maiores em menores, reduzindo os dados redundantes, enquanto a desnormalização é o processo de adicionar dados redundantes para otimizar o desempenho.
– A normalização é realizada para evitar anomalias nos bancos de dados.
– A desnormalização geralmente é realizada para melhorar o desempenho de leitura do banco de dados, mas devido às restrições adicionais usadas para desnormalização, as gravações (ou seja, operações de inserção, atualização e exclusão) podem se tornar mais lentas. Portanto, um banco de dados desnormalizado pode oferecer um desempenho de gravação pior do que um banco de dados normalizado.
– Muitas vezes é recomendado que você deve “normalizar até doer, desnormalizar até que funcione”.