1NF é o mais básico dos formulários normais - cada célula de uma tabela deve conter apenas uma informação e não pode haver linhas duplicadas.
2NF e 3NF são todos dependentes da chave primária. Lembre-se de que uma chave primária pode ser composta de várias colunas. Como Chris disse em sua resposta:
Os dados dependem da tecla [1NF], da tecla inteira [2NF] e nada além da tecla [3NF] (então, me ajude a Codd ).
2NF
Digamos que você tenha uma tabela contendo os cursos realizados em um determinado semestre e tenha os seguintes dados:
|-----Primary Key----| uh oh |
V
CourseID | SemesterID | #Places | Course Name |
------------------------------------------------|
IT101 | 2009-1 | 100 | Programming |
IT101 | 2009-2 | 100 | Programming |
IT102 | 2009-1 | 200 | Databases |
IT102 | 2010-1 | 150 | Databases |
IT103 | 2009-2 | 120 | Web Design |
Isso não está no 2NF , porque a quarta coluna não depende de toda a chave - mas apenas de uma parte dela. O nome do curso depende do ID do curso, mas não tem nada a ver com o semestre em que ele foi realizado. Assim, como você pode ver, temos informações duplicadas - várias linhas nos informando que o IT101 está programando e o IT102 é Databases. Então, corrigimos isso movendo o nome do curso para outra tabela, em que CourseID é a chave INTIRE.
Primary Key |
CourseID | Course Name |
---------------------------|
IT101 | Programming |
IT102 | Databases |
IT103 | Web Design |
Sem redundância!
3NF
Ok, digamos que também adicionamos o nome do professor do curso e alguns detalhes sobre eles no RDBMS:
|-----Primary Key----| uh oh |
V
Course | Semester | #Places | TeacherID | TeacherName |
---------------------------------------------------------------|
IT101 | 2009-1 | 100 | 332 | Mr Jones |
IT101 | 2009-2 | 100 | 332 | Mr Jones |
IT102 | 2009-1 | 200 | 495 | Mr Bentley |
IT102 | 2010-1 | 150 | 332 | Mr Jones |
IT103 | 2009-2 | 120 | 242 | Mrs Smith |
Agora, espero que seja óbvio que o TeacherName depende do TeacherID - portanto, isso não está no 3NF . Para consertar isso, fazemos o mesmo que fizemos no 2NF - retire o campo TeacherName dessa tabela e coloque-o por conta própria, que possui o TeacherID como a chave.
Primary Key |
TeacherID | TeacherName |
---------------------------|
332 | Mr Jones |
495 | Mr Bentley |
242 | Mrs Smith |
Sem redundância !!
Uma coisa importante a lembrar é que, se algo não está em 1NF, também não está em 2NF ou 3NF. Assim, cada forma normal adicional requer tudo o que as formas normais mais baixos tinha, além de algumas condições adicionais, que devem todos ser cumpridas.