1NF vs 2NF vs 3NF
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. 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, que também é o inventor do modelo relacional e do conceito de normalização.
O que é 1NF?
1NF é a primeira forma 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 ela realmente representa uma relação (ou seja, não contém nenhum registro que está 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 nenhum atributo 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 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.
O que é 3NF?
3NF é a terceira forma normal usada na normalização de banco de dados relacional. 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 em cada chave candidata dessa tabela. Em 1982, Carlo Zaniolo produziu uma definição expressa de forma diferente para 3FN. As tabelas que atendem à 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 em tabelas. A 3NF é considerada uma forma normal mais forte que a 2NF e é considerada uma forma normal mais forte que a 1NF. Portanto, em geral, obter uma tabela que atenda ao formulário da 3FN exigirá a decomposição de uma tabela que está na 2FN. Da mesma forma, obter uma tabela que esteja de acordo com a 2FN exigirá a decomposição de uma tabela que está na 1FN. No entanto, se uma tabela que está em conformidade com 1NF contiver chaves candidatas que são compostas apenas por um único atributo (ou seja, chaves candidatas não compostas), tal tabela estará automaticamente em conformidade com 2NF. A decomposição de tabelas resultará em operações adicionais de junção (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.