Normalização de Banco de Dados
A normalização de banco de dados é um processo que organiza os dados para minimizar a redundância e melhorar a integridade dos dados. O conceito foi introduzido por Edgar F. Codd, o criador do modelo relacional. A normalização é composta por várias formas normais (Normal Forms – NF), cada uma adicionando regras mais restritivas para a estrutura do banco.
📌 Primeira Forma Normal - First Normal Form - 1NF
Definição:
Um banco de dados está na 1NF quando:
- Todos os atributos armazenam valores atômicos (indivisíveis, sem repetições ou listas).
- Cada coluna contém um único tipo de dado (exemplo: números, datas ou textos, mas nunca uma mistura).
- Cada registro tem uma chave primária que o identifica de forma única.
Exemplo de Problema (Não está em 1NF):
📌 Erro: A coluna "Telefones" contém múltiplos valores.
Solução (Convertido para 1NF):
Agora, cada campo contém um único valor atômico.
📌 Segunda Forma Normal - Second Normal Form - 2NF
Definição:
Um banco de dados está na 2NF quando:
- Está na 1NF.
- Todos os atributos não-chave dependem da chave primária inteira, e não apenas de parte dela (evita dependências parciais).
Exemplo de Problema (Não está em 2NF):
📌 Erro: O campo "Produto_Nome" depende apenas de "Produto_ID", não da chave primária composta ("Pedido_ID", "Produto_ID").
Solução (Convertido para 2NF):
Tabela Pedido_Produto:
Tabela Produto:
Agora, "Produto_Nome" depende exclusivamente de "Produto_ID".
📌 Terceira Forma Normal - Third Normal Form - 3NF
Definição:
Um banco de dados está na 3NF quando:
- Está na 2NF.
- Todos os atributos não-chave dependem somente da chave primária e não de outros atributos não-chave (evita dependências transitivas).
Exemplo de Problema (Não está em 3NF):
📌 Erro: "Estado" depende de "Cidade" e não diretamente de "Cliente_ID".
Solução (Convertido para 3NF):
Tabela Cliente:
Tabela Cidade:
Agora, cada atributo depende diretamente da chave primária.
📌 Quarta Forma Normal - Fourth Normal Form - 4NF
Definição:
Um banco de dados está na 4NF quando:
- Está na 3NF.
- Elimina dependências multivaloradas, ou seja, quando um atributo pode ter múltiplos valores independentes de outro.
Exemplo de Problema (Não está em 4NF):
📌 Erro: O professor ensina múltiplas disciplinas e pode lecionar em vários campus, gerando redundância.
Solução (Convertido para 4NF):
Tabela Professor_Disciplina:
Tabela Professor_Campus:
Agora, cada relação foi separada corretamente.
📌 Quinta Forma Normal - Fifth Normal Form - 5NF
Definição:
Um banco de dados está na 5NF quando:
- Está na 4NF.
- Separa tabelas para eliminar dependências de junção, garantindo que a decomposição do banco de dados não cause perda de dados ou redundância.
Exemplo de Problema (Não está em 5NF):
📌 Erro: As dependências entre produto, fornecedor e cliente não são corretamente representadas.
Solução (Convertido para 5NF):
Criamos três tabelas:
Tabela Produto_Fornecedor:
Tabela Produto_Cliente:
Tabela Fornecedor_Cliente:
Isso evita dependências complexas entre os três elementos.
📌 Conclusão
Cada forma normal tem como objetivo eliminar redundâncias e garantir integridade dos dados. Em sistemas reais, nem sempre é necessário atingir a 5NF, pois normalizações excessivas podem impactar a performance. O equilíbrio entre normalização e desempenho é essencial para um bom design de banco de dados.