A 2FN elimina dependências funcionais parciais em chaves primárias compostas. Uma tabela está na 2FN se:
Considere a tabela ITEM_PEDIDO com chave composta (Nº_Pedido, Cod_Produto):
Tabela original (1FN mas não 2FN):
| Nº_Pedido | Cod_Produto | Qtd | Descrição | Valor_Unit |
|---|---|---|---|---|
| 001 | 1001 | 2 | Caneta | 1.50 |
| 001 | 1002 | 1 | Lápis | 1.00 |
Problema: Descrição e Valor_Unit dependem apenas de Cod_Produto (dependência parcial).
Após 2FN - Três tabelas: PEDIDO:
| Nº_Pedido | Data | Cliente |
|---|---|---|
| 001 | 15/01 | João |
ITEM_PEDIDO:
| Nº_Pedido | Cod_Produto | Quantidade |
|---|---|---|
| 001 | 1001 | 2 |
| 001 | 1002 | 1 |
PRODUTO:
| Cod_Produto | Descrição | Valor_Unit |
|---|---|---|
| 1001 | Caneta | 1.50 |
| 1002 | Lápis | 1.00 |
A 3FN elimina dependências funcionais transitivas. Uma tabela está na 3FN se:
Considere a tabela PEDIDO com dependência transitiva:
Tabela original (2FN mas não 3FN):
| Nº_Pedido | Cliente | Endereço | Cidade | UF |
|---|---|---|---|---|
| 001 | João | Rua A | São Paulo | SP |
Problema: Endereço, Cidade, UF dependem de Cliente (não da chave).
Após 3FN - Duas tabelas: PEDIDO:
| Nº_Pedido | Cliente | Data_Entrega |
|---|---|---|
| 001 | João | 20/01 |
CLIENTE:
| Cliente | Endereço | Cidade | UF |
|---|---|---|---|
| João | Rua A | São Paulo | SP |
A FNBC trata casos especiais onde existem múltiplas chaves candidatas que se sobrepõem. Uma tabela está na FNBC se todo determinante for uma chave candidata.
Considere uma tabela TURMA_PROFESSOR com três chaves candidatas sobrepostas:
Chaves candidatas:
Tabela original:
| Cod_Curso | Turma | Matricula_Professor | Nome_Professor |
|---|---|---|---|
| BD001 | A | P001 | Maria Silva |
Problema: Matricula_Professor determina Nome_Professor, mas não é chave candidata.
Após FNBC - Duas tabelas: TURMA:
| Cod_Curso | Turma | Matricula_Professor |
|---|---|---|
| BD001 | A | P001 |
PROFESSOR:
| Matricula_Professor | Nome_Professor |
|---|---|
| P001 | Maria Silva |
A 4FN trata dependências multivaloradas independentes. Uma tabela está na 4FN se não existirem duas ou mais dependências multivaloradas independentes.
Uma dependência multivalorada ocorre quando um atributo determina múltiplos valores independentes de outro atributo.
Exemplo: Um cliente pode ter múltiplos telefones E múltiplos endereços de entrega, independentemente.
A 5FN trata dependências de junção em relacionamentos complexos (ternários ou superiores). Uma tabela está na 5FN se não puder ser decomposta sem perda de informação.
Casos raros envolvendo relacionamentos múltiplos onde a decomposição em tabelas menores resultaria em perda de informações originais.
Exemplo: Em um sistema de projetos, onde funcionários trabalham em projetos usando ferramentas específicas, pode haver dependências complexas que exigem análise cuidadosa.
A normalização avançada garante bancos de dados robustos e eficientes para aplicações complexas.