1NF vs 2NF vs 3NF
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. 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, que também é o inventor do modelo relacional e do conceito de normalização.
O que é 1NF?
1NF é o primeiro formulário normal, que fornece o conjunto mínimo de requisitos para normalizar um banco de dados relacional. Uma tabela que está em conformidade com 1NF garante que realmente representa uma relação (ou seja, não contém nenhum registro que esteja se repetindo), mas não há uma definição universalmente aceita para 1NF. Uma propriedade importante é que uma tabela que esteja em conformidade com 1NF não pode conter atributos com valor relacional (ou seja, todos os atributos devem ter valores atômicos).
O que é 2NF?
2NF é a segunda forma normal usada em bancos de dados relacionais. Para que uma tabela esteja 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.
O que é 3NF?
3NF é a terceira forma normal usada na normalização de banco de dados relacional. 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 em todas as chaves candidatas dessa tabela. Em 1982, Carlo Zaniolo produziu uma definição diferente para 3NF. As tabelas que estão em conformidade com o 3NF geralmente não contêm anomalias que ocorrem ao inserir, excluir ou atualizar registros na tabela.
Qual é a diferença entre 1NF e 2NF e 3NF?
1NF, 2NF e 3NF são formas normais usadas em bancos de dados relacionais para minimizar redundâncias nas tabelas. 3NF é considerado como uma forma normal mais forte que o 2NF e é considerado como uma forma normal mais forte que 1NF. Portanto, em geral, a obtenção de uma tabela que esteja em conformidade com o formulário 3NF exigirá a decomposição de uma tabela que esteja no 2NF. Da mesma forma, a obtenção de uma tabela que esteja em conformidade com o 2NF exigirá a decomposição de uma tabela que esteja no 1NF. No entanto, se uma tabela que esteja em conformidade com 1NF contiver chaves candidatas compostas apenas por um único atributo (ou seja, chaves candidatas não compostas), essa tabela estará automaticamente em conformidade com 2NF. A decomposição de tabelas resultará em operações de junção adicionais (ou produtos cartesianos) ao executar consultas. Isso aumentará o tempo computacional. Por outro lado, as tabelas que atendem a formas normais mais fortes teriam menos redundâncias do que as tabelas que atendem apenas a formas normais mais fracas.