Normalização II
Objetivos
- Aplicar a Segunda Forma Normal (2FN).
- Implementar a Terceira Forma Normal (3FN).
- Compreender a Forma Normal de Boyce-Codd (FNBC).
- Explorar a Quarta Forma Normal (4FN).
- Conhecer a Quinta Forma Normal (5FN).
Segunda Forma Normal (2FN)
A 2FN elimina dependências funcionais parciais em chaves primárias compostas. Uma tabela está na 2FN se:
- Está na 1FN
- Todos os atributos não-chave dependem totalmente da chave primária (não de parte dela)
Aplicando 2FN - Exemplo Prático
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 |
Terceira Forma Normal (3FN)
A 3FN elimina dependências funcionais transitivas. Uma tabela está na 3FN se:
- Está na 2FN
- Nenhum atributo não-chave depende de outro atributo não-chave
Aplicando 3FN - Exemplo Prático
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 |
Forma Normal de Boyce-Codd (FNBC)
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.
Exemplo FNBC
Considere uma tabela TURMA_PROFESSOR com três chaves candidatas sobrepostas:
Chaves candidatas:
- (Cod_Curso, Turma)
- (Cod_Curso, Matricula_Professor)
- (Turma, Matricula_Professor)
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 |
Quarta Forma Normal (4FN)
A 4FN trata dependências multivaloradas independentes. Uma tabela está na 4FN se não existirem duas ou mais dependências multivaloradas independentes.
Exemplo 4FN
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.
Quinta Forma Normal (5FN)
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.
Quando Aplicar 5FN
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.
Benefícios das Formas Normais Avançadas
- Eliminação completa de anomalias: 2FN e 3FN resolvem problemas restantes da 1FN
- Otimização de performance: Estruturas mais eficientes para consultas
- Manutenção simplificada: Mudanças locais não afetam outras partes
- Flexibilidade: Adaptação fácil a novos requisitos
Ordem Recomendada de Aplicação
- 1FN - Eliminar grupos repetitivos
- 2FN - Remover dependências parciais
- 3FN - Eliminar dependências transitivas
- FNBC - Tratar chaves candidatas sobrepostas
- 4FN - Resolver dependências multivaloradas
- 5FN - Casos especiais de dependências de junção
A normalização avançada garante bancos de dados robustos e eficientes para aplicações complexas.