Normalização vs desnormalização
Os 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), podem 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. Normalização e desnormalização são dois processos usados para otimizar o desempenho do banco de dados. A normalização minimiza as redundâncias que estão presentes nas tabelas de dados. A desnormalização (reverso da normalização) adiciona dados redundantes ou dados de grupo.
O que é normalização?
A normalização é um processo 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 de “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 (1NF), a Segunda Forma Normal (2NF) e a Terceira Forma Normal (3NF) foram introduzidas por Edgar F. Codd. A forma normal de Boyce-Codd (BCNF) foi introduzida em 1974 por Codd e Raymond F. Boyce. 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 esteja se repetindo) e não contém nenhum atributo de valor relacional (ou seja, 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 do Codd, uma tabela é dita em 3NF, se e somente se, essa tabela está na segunda forma normal (2NF) 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 anomalias que não são tratadas pelo 3NF.
O que é desnormalização?
A desnormalização é o processo reverso 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 pode incorrer em pesadas penalidades de desempenho com bancos de dados normalizados (mesmo ajustados para desempenho superior). Isso ocorre porque juntar várias relações (que são resultados da normalização) para produzir um resultado para uma consulta às vezes pode 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. - 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 (isto é, inserir, atualizar e excluir operações) podem se tornar mais lentas. Portanto, um banco de dados desnormalizado pode oferecer pior desempenho de gravação do que um banco de dados normalizado. - Muitas vezes é recomendado que você “normalize até doer, desnormalize até que funcione”. |