Normalização vs Desnormalização
Os bancos de dados relacionais são compostos de relações (tabelas relacionadas). As tabelas são compostas de 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. 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 presentes nas tabelas de dados. A desnormalização (reversa da normalização) adiciona dados redundantes ou dados de grupo.
O que é normalização?
Normalização é um processo realizado para minimizar as redundâncias presentes nos dados nos bancos de dados relacionais. Esse processo dividirá principalmente tabelas grandes em tabelas menores, com menos redundâncias (chamadas "formulários 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 mais altas (4NF, 5NF e 6NF) foram definidas, mas estão sendo usadas raramente.
Uma tabela que esteja em conformidade com 1NF garante que realmente representa uma relação (ou seja, não contém nenhum registro que esteja se repetindo) e não contém nenhum atributo com valor relacional (ou seja, todos os atributos devem ter valores atômicos). Para uma tabela estar em conformidade com 2NF, ela deve ser cumprida 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 da tabela. De acordo com a definição do Codd, diz-se que uma tabela está em 3NF, se e somente se, essa tabela está na segunda forma normal (2NF) e todos os atributos na tabela que não pertencem a uma chave candidata devem depender diretamente de cada chave candidata dessa tabela. O 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 inverso do processo de normalização. A desnormalização funciona adicionando dados redundantes ou agrupando dados para otimizar o desempenho. Mesmo que a adição de dados redundantes pareça contraproducente, às vezes a desnormalização é um processo muito importante para superar algumas das deficiências do software de banco de dados relacional que podem incorrer em grandes penalidades de desempenho com bancos de dados normalizados (até ajustados para um desempenho superior). Isso ocorre porque a junção de várias relações (que são resultados da normalização) para produzir um resultado em uma consulta às vezes pode ser lenta, 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 tabelas 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 a desnormalização, as gravações (ou seja, operações de inserção, atualização e exclusão) podem ficar mais lentas. Portanto, um banco de dados desnormalizado pode oferecer desempenho de gravação pior do que um banco de dados normalizado. - Geralmente, é recomendável que você "normalize até doer, desnormalize até que funcione".
|