📊 Tópico 6 - Normalização de Dados

🎯 Objetivos de Aprendizagem
  • Compreender o conceito e importância da normalização
  • Identificar problemas de design em tabelas
  • Aplicar as formas normais (1FN, 2FN, 3FN)
  • Reconhecer dependências funcionais
  • Praticar normalização com exemplos reais
📊 1. Conceito de Normalização

Segundo Elmasri & Navathe (2017), a normalização é um processo de decomposição de tabelas para eliminar redundâncias e inconsistências, organizando os dados de forma eficiente.

Definição Acadêmica

"A normalização é o processo de decomposição de tabelas para eliminar redundâncias e dependências indesejáveis" - Date (2003)

🎯 Objetivos da Normalização:
  • Eliminar Redundância: Evitar duplicação de dados
  • Reduzir Inconsistência: Manter dados consistentes
  • Facilitar Manutenção: Simplificar atualizações
  • Melhorar Performance: Otimizar consultas
  • Garantir Integridade: Manter consistência
  • Economizar Espaço: Reduzir armazenamento
❌ 2. Problemas sem Normalização
🔴 Anomalias de Dados:
🔹 Anomalia de Inserção

Dificuldade para inserir novos dados

Ex: Inserir funcionário sem departamento

🔸 Anomalia de Atualização

Dificuldade para atualizar dados

Ex: Atualizar nome do departamento

🔹 Anomalia de Exclusão

Perda acidental de dados

Ex: Excluir funcionário e perder departamento

📋 Exemplo Prático - Tabela Não Normalizada:
ID_Funcionário Nome Departamento Gerente Projeto Data_Início
1 João Silva TI Maria Santos Projeto A 2024-01-15
1 João Silva TI Maria Santos Projeto B 2024-02-01
2 Ana Costa TI Maria Santos Projeto A 2024-01-20
🔗 3. Dependências Funcionais

Conforme Date (2003), uma dependência funcional é uma restrição entre dois conjuntos de atributos em uma relação.

📋 Definição Formal:
Dependência Funcional

Seja R uma relação e X, Y conjuntos de atributos. Y é funcionalmente dependente de X (X → Y) se, para cada valor de X, existe exatamente um valor de Y.

🔍 Exemplos de Dependências Funcionais:
  • CPF → Nome: CPF determina nome
  • ID_Departamento → Nome_Departamento: ID determina nome
  • ISBN → Título: ISBN determina título
  • Matrícula → Curso: Matrícula determina curso
  • ID_Produto → Preço: ID determina preço
  • CEP → Cidade: CEP determina cidade
📊 4. Formas Normais
🔹 1ª Forma Normal (1FN)

Todos os atributos são atômicos (indivisíveis)

  • Sem grupos repetitivos
  • Valores únicos por célula
  • Estrutura tabular
🔸 2ª Forma Normal (2FN)

1FN + dependências parciais eliminadas

  • Atributos não-chave dependem da chave completa
  • Elimina dependências parciais
  • Reduz redundância
🔹 3ª Forma Normal (3FN)

2FN + dependências transitivas eliminadas

  • Atributos não-chave dependem apenas da chave
  • Elimina dependências transitivas
  • Máxima normalização prática
🔄 5. Processo de Normalização
📋 Passos para Normalização:
🔹 Passo 1: Identificar Dependências
  • Mapear dependências funcionais
  • Identificar chaves primárias
  • Reconhecer dependências parciais
  • Detectar dependências transitivas
🔸 Passo 2: Aplicar Formas Normais
  • Verificar 1FN (atributos atômicos)
  • Aplicar 2FN (eliminar dependências parciais)
  • Implementar 3FN (eliminar dependências transitivas)
  • Validar resultado
🎯 Exemplo Prático - Normalização:
Tabela Normalizada

Após normalização, temos tabelas separadas para Funcionário, Departamento e Projeto, eliminando redundâncias e inconsistências.

⚖️ 6. Vantagens e Desvantagens da Normalização
✅ Vantagens
  • Elimina Redundância: Dados únicos
  • Reduz Inconsistência: Dados consistentes
  • Facilita Manutenção: Atualizações simples
  • Melhora Integridade: Dados válidos
  • Economiza Espaço: Menos armazenamento
⚠️ Desvantagens
  • Consultas Complexas: Múltiplos JOINs
  • Performance: Pode ser mais lento
  • Complexidade: Estrutura mais complexa
  • Overhead: Mais tabelas
  • Manutenção: Mais tabelas para gerenciar
🧪 Exercícios Práticos
📝 Exercício 1: Identificação de Problemas

Analise uma tabela não normalizada e identifique:

  • Quais anomalias existem?
  • Quais dependências funcionais?
  • Como normalizar para 3FN?
  • Quais tabelas resultantes?
🎯 Exercício 2: Normalização Prática

Normalize tabelas para:

  • Sistema de biblioteca
  • Controle de estoque
  • Gestão de funcionários
  • Sistema de vendas
📚 Referências Bibliográficas
📖 Livros Fundamentais:
  • ELMASRI, R.; NAVATHE, S. Sistemas de Banco de Dados. 6ª ed. São Paulo: Pearson, 2017.
  • DATE, C. J. An Introduction to Database Systems. 8ª ed. Boston: Addison-Wesley, 2003.
  • CONNOLLY, T.; BEGG, C. Database Systems: A Practical Approach to Design, Implementation, and Management. 6ª ed. Boston: Pearson, 2015.
📄 Artigos Científicos:
  • CODD, E. F. A Relational Model of Data for Large Shared Data Banks. Communications of the ACM, v. 13, n. 6, p. 377-387, 1970.
  • KORTH, H. F.; SILBERSCHATZ, A.; SUDARSHAN, S. Database System Concepts. 6ª ed. New York: McGraw-Hill, 2010.