GeeksforGeeks
Primeiro Formulário Normal (1NF) não elimina a redundância, mas sim, é que elimina grupos repetidos.
Em vez de ter múltiplas colunas do mesmo tipo de dados num registo, (0NF ou formulário não normalizado) você remove as informações repetidas numa relação separada e representa-as como linhas. Isto é o que constitui 1NF.
Segundo Formulário Normal (2NF):
Segundo Formulário Normal (2NF) é baseado no conceito de dependência funcional completa. O segundo Formulário Normal aplica-se a relações com chaves compostas, ou seja, relações com uma chave primária composta de dois ou mais atributos. Uma relação com uma chave primária de um atributo é automaticamente em pelo menos 2NF. Uma relação que não esteja em 2NF pode sofrer com as anomalias de atualização.
Para estar na segunda forma normal, uma relação deve estar na primeira forma normal e a relação não deve conter nenhuma dependência parcial. Uma relação está em 2NF se não tiver nenhuma dependência parcial, ou seja, nenhum atributo não-prime (atributos que não fazem parte de nenhuma chave candidata) está dependente de qualquer subconjunto apropriado de qualquer chave candidata da tabela.
Em outras palavras,
Uma relação que está no Primeiro Formulário Normal e todo atributo de chave não-primária é totalmente dependente funcionalmente da chave primária, então a relação está no Segundo Formulário Normal (2NF).
Nota – Se o subconjunto apropriado de chave candidata determina o atributo não-primário, ele é chamado de dependência parcial.
A normalização das relações 1NF para 2NF envolve a remoção de dependências parciais. Se existir uma dependência parcial, removemos o(s) atributo(s) parcialmente dependente(s) da relação, colocando-os numa nova relação juntamente com uma cópia do seu determinante.
Consulte os exemplos dados abaixo.
Exemplo-1:
Tabela de avaliação como abaixo.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Nota que, existem muitos cursos com a mesma taxa de curso. }
Aqui,
COURSE_FEE não pode decidir sozinho o valor de COURSE_NO ou STUD_NO;
COURSE_FEE juntamente com STUD_NO não pode decidir o valor de COURSE_NO;
COURSE_FEE juntamente com COURSE_NO não pode decidir o valor de STUD_NO;
Hence,
COURSE_FEE seria um atributo não primário, pois não pertence à única chave candidata {STUD_NO, COURSE_NO} ;
But, COURSE_NO -> COURSE_FEE, i.e., COURSE_FEE é dependente de COURSE_NO, que é um subconjunto apropriado da chave candidata. O atributo não-prime COURSE_FEE depende de um subconjunto próprio da chave candidata, que é uma dependência parcial e, portanto, essa relação não está no 2NF.
Para converter a relação acima para 2NF,
precisamos dividir a tabela em duas tabelas como :
Tabela 1: STUD_NO, COURSE_NO
Tabela 2: COURSE_NO, COURSE_FEE
Table 1 Table 2STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 10002 C2 C2 15001 C4 C3 10004 C3 C4 20004 C1 C5 2000 2 C5
Nota – 2NF tenta reduzir os dados redundantes que ficam armazenados na memória. Por exemplo, se houver 100 alunos fazendo o curso C1, não precisamos armazenar sua taxa como 1000 para todos os 100 registros, em vez disso, uma vez que podemos armazená-la na segunda tabela, já que a taxa do curso C1 é 1000.
Exemplo-2:
Considerando as seguintes dependências funcionais em relação a R (A, B, C, D )
AB -> C BC -> D
Na relação acima, AB é a única chave candidata e não há dependência parcial, ou seja, qualquer subconjunto próprio de AB não determina nenhum atributo não-prime.