Capítulo 04: Normalização de Dados na Prática Logística: 1FN, 2FN e 3FN
🎯 Objetivo da Aula
Nesta aula fundamental, você dominará o conceito mais importante da engenharia de banco de dados relacional: a Normalização de Dados. No laboratório de informática, você aprenderá a identificar as três anomalias clássicas de sistemas desorganizados (Inserção, Atualização e Exclusão) e aplicará passo a passo as Três Primeiras Formas Normais (1FN, 2FN e 3FN). Você pegará uma planilha corporativa plana e desordenada da FastLog S.A. e a decomporá em uma arquitetura relacional elegante, eficiente e livre de redundâncias.
Ao final desta aula, você terá concluído o Módulo 1 com a estrutura de dados mais refinada e profissional possível, pronta para receber relacionamentos e integridade no Módulo 2.
🏢 Cenário Prático (FastLog S.A.)
Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: A diretoria de operações utilizava uma planilha gigante chamada Manifesto_Geral_Fretes.xlsx contendo mais de 35 colunas por linha: CodFrete, Data, Placa, ModeloCaminhao, Eixos, NomeMotorista, CNH, ValidadeCNH, CodFilialOrigem, NomeFilial, GerenteFilial, CidadeOrigem, UFOrigem, CodFilialDestino....
Quando o gerente da filial de Curitiba foi substituído, o assistente precisou atualizar 4.200 linhas antigas no Excel; como esqueceu algumas páginas de 2024, metade dos relatórios da empresa passou a apontar o gerente antigo e a outra metade o gerente novo (Anomalia de Atualização). Além disso, quando a transportadora vendeu o caminhão de placa FLG-1000 e o operador apagou a linha dele, o sistema perdeu para sempre o cadastro do cliente e da rota que estavam registrados apenas naquela viagem (Anomalia de Exclusão).
Sua Missão: Como arquiteto de dados, você aplicará as regras da 1FN, 2FN e 3FN para decompor essa planilha caótica em tabelas atômicas e independentes no Microsoft Access.
🧠 Fundamentos: A Teoria Traduzida
1. As 3 Anomalias que Destroem Bancos de Dados Desnormalizados
A teoria da normalização foi formulada pelo matemático Edgar F. Codd em 1970 para eliminar três dores corporativas:
- Anomalia de Inserção: Impossibilidade de cadastrar uma nova filial ou novo caminhão sem antes criar um frete fictício para ele.
- Anomalia de Atualização: Se os dados de um motorista ou filial mudarem, você é obrigado a alterar centenas de linhas. Se esquecer uma única linha, a base fica inconsistente.
- Anomalia de Exclusão: Se você excluir o registro de uma viagem cancelada, você apaga acidentalmente do banco o histórico de endereço do cliente ou a ficha do caminhão.
flowchart TD
TABELA_PLANA["📄 Tabela Plana Não-Normalizada (Excel)<br/>CodFrete | Motorista | CNH | Placa | Filial | GerenteFilial"]
TABELA_PLANA -->|"1FN: Atomicidade & Fim de Listas"| F1["1ª Forma Normal (1FN)"]
F1 -->|"2FN: Eliminação de Dependência Parcial"| F2["2ª Forma Normal (2FN)"]
F2 -->|"3FN: Eliminação de Dependência Transitiva"| F3["3ª Forma Normal (3FN)"]
subgraph ARQUITETURA_3FN["Arquitetura 3FN Final no Access"]
F3 --> T1[("tbl_Filiais")]
F3 --> T2[("tbl_Motoristas")]
F3 --> T3[("tbl_Veiculos")]
F3 --> T4[("tbl_OrdensFrete")]
end
style TABELA_PLANA fill:#f8d7da,stroke:#721c24,stroke-width:2px,color:#721c24
style F1 fill:#fff3cd,stroke:#856404,stroke-width:2px,color:#856404
style F2 fill:#d1ecf1,stroke:#0c5460,stroke-width:2px,color:#0c5460
style F3 fill:#d4edda,stroke:#155724,stroke-width:2px,color:#155724
style ARQUITETURA_3FN fill:#e9ecef,stroke:#495057,stroke-width:2px2. O Passo a Passo das Formas Normais
📌 1ª Forma Normal (1FN) - Atomicidade dos Campos
- Regra 1: Todos os campos devem ser atômicos (conter um único valor indivisível por célula).
- Violação: Campo
Produtos_Transportadoscom valor"100 Sacas Soja, 50 Caixas Óleo, 20 Fardos Açúcar". - Solução: Cada produto deve ser um registro separado.
- Violação: Campo
- Regra 2: Eliminar colunas repetitivas ou vetores na tabela.
- Violação: Criar colunas
Telefone1,Telefone2,Telefone3ouItem1,Item2,Item3.
- Violação: Criar colunas
- Regra 3: Definir formalmente uma Chave Primária (PK).
📌 2ª Forma Normal (2FN) - Dependência Funcional Total
- Pré-requisito: A tabela já deve estar na 1FN.
- Regra: Todos os atributos que não são chave devem depender da Chave Primária por completo, e não apenas de parte dela (aplicável em tabelas com chave primária composta).
- Exemplo: Em uma tabela de fretes com chave composta
(ID_OrdemFrete, ID_Produto), o atributoDescricao_Produtodepende apenas deID_Produto, e não deID_OrdemFrete. Portanto, a descrição do produto deve ser movida para a tabelatbl_Produtos!
- Exemplo: Em uma tabela de fretes com chave composta
📌 3ª Forma Normal (3FN) - Eliminação de Dependências Transitivas
- Pré-requisito: A tabela já deve estar na 2FN.
- Regra de Ouro: Nenhum atributo não-chave pode depender de outro atributo não-chave. Todos os atributos devem depender exclusivamente e diretamente da Chave Primária.
- A famosa máxima de Bill Kent: “O dado deve fornecer um fato sobre a chave, a chave inteira e nada mais além da chave!”.
- Violação: Na tabela de fretes, ter as colunas
CodFilial,NomeFilialeGerenteFilial. O nome e o gerente dependem deCodFilial, e não doID_OrdemFrete. - Solução: Mover
NomeFilial,CidadeeGerentepara uma tabela separada:tbl_Filiais.
📖 Exemplo Guiado: Passo a Passo no Laboratório
Abra o arquivo FastLog_Database.accdb. Vamos transformar a entidade “Filiais” em uma tabela normalizada 3FN para suportar as ordens de despacho.
Passo 1: Criando a Tabela tbl_Filiais (3FN)
- Clique em Criar ➔ Design da Tabela.
- Adicione os campos da unidade operacional:
ID_Filial: Autonumeração, Chave Primária 🔑.Codigo_Filial: Texto Curto, Tamanho:6, Requerido: Sim, Indexado: Sim (Sem Duplicação) (Ex: “FIL-CP”, “FIL-CT”).Nome_Filial: Texto Curto, Tamanho:50, Requerido: Sim.Cidade: Texto Curto, Tamanho:40, Requerido: Sim.UF: Texto Curto, Tamanho:2, Máscara:>LL, Requerido: Sim.Nome_Gerente: Texto Curto, Tamanho:60.Telefone_Operacional: Texto Curto, Tamanho:15, Máscara:\(00\) 0000\-0000;0;_.
- Salve a tabela como:
tbl_Filiais.
🛠️ Prática Obrigatória 1: Povoando a Tabela de Filiais Normalizada
Cadastre as filiais centrais da FastLog para verificar a ausência de redundâncias.
Passo a Passo no Computador:
- Abra
tbl_Filiaisno Modo Folha de Dados. - Insira os 3 registros mestres:
- Linha 1: Código:
FIL-SP| Nome:Hub Matriz São Paulo| Cidade:São Paulo| UF:SP| Gerente:Rodrigo Peçanha| Telefone:(11) 3200-4000 - Linha 2: Código:
FIL-CP| Nome:Centro Logístico Campinas| Cidade:Campinas| UF:SP| Gerente:Vanessa Martins| Telefone:(19) 3800-9100 - Linha 3: Código:
FIL-CT| Nome:Terminal Sul Curitiba| Cidade:Curitiba| UF:PR| Gerente:Eduardo Fontes| Telefone:(41) 3300-8800
- Linha 1: Código:
- Observe que agora, se o gerente de Curitiba mudar de cargo, alteramos uma única célula na linha 3, e todas as futuras ordens de frete associadas à filial
FIL-CTestarão automaticamente atualizadas!
✅ Resultado Esperado (Prática 1):
A tabela tbl_Filiais armazena os dados das unidades logísticas sem nenhuma duplicação de cidades ou telefones em fretes individuais.
🛠️ Prática Obrigatória 2: Adequação da Tabela de Ordens de Frete para 3FN
Agora você refatorará a tabela tbl_OrdensFrete que criamos no Capítulo 03 para que ela armazene apenas as Chaves Estrangeiras (FK) que apontam para as tabelas mestres.
Passo a Passo no Computador:
- Abra
tbl_OrdensFreteno Modo Design. - Adicione as colunas de ligação relacional:
- Insira a linha:
ID_Cliente➔ Tipo: Número ➔ Tamanho do Campo: Inteiro Longo, Requerido: Sim. - Insira a linha:
Placa_Veiculo➔ Tipo: Texto Curto ➔ Tamanho do Campo:7, Máscara:>LLL0A00;;_, Requerido: Sim. - Insira a linha:
ID_Motorista➔ Tipo: Número ➔ Tamanho do Campo: Inteiro Longo, Requerido: Sim. - Insira a linha:
ID_Filial_Origem➔ Tipo: Número ➔ Tamanho do Campo: Inteiro Longo, Requerido: Sim. - Insira a linha:
ID_Filial_Destino➔ Tipo: Número ➔ Tamanho do Campo: Inteiro Longo, Requerido: Sim.
- Insira a linha:
- Compreensão Arquitetural:
- Observe que em
tbl_OrdensFreteNÃO EXISTEM MAIS colunas comoNomeCliente,CNPJ,ModeloVeiculo,NomeMotoristaouCidadeFilial! - Todos esses dados descritivos agora residem com exclusividade em suas tabelas mestres (
tbl_Clientes,tbl_Veiculos,tbl_Motoristasetbl_Filiais).
- Observe que em
- Salve e feche a tabela.
✅ Resultado Esperado (Prática 2):
A tabela tbl_OrdensFrete atinge a plenitude da 3ª Forma Normal (3FN), contendo apenas os dados do fato do transporte (datas, valor, peso) e as chaves numéricas de referência.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o banco de dados e feche o Access.
- Nomeie o arquivo:
FastLog_BD_Cap04_SeuNome_SeuSobrenome.accdb. - No Microsoft Teams, abra a atividade: “Banco de Dados - Cap 04: Normalização 1FN, 2FN e 3FN”.
- Envie o arquivo
.accdbe clique em Entregar (Turn In).
💡 Checkpoint de Gestão & TI
Por que a Normalização é um divisor de águas na carreira de um gestor de logística? Porque dados normalizados ocupam até 70% menos espaço em disco, reduzem o tráfego de rede corporativa e eliminam o pesadelo de relatórios conflitantes que mostram números diferentes para o mesmo indicador em reuniões de diretoria. Um banco 3FN é a garantia de integridade corporativa.
🔥 Desafio de Fixação: Decomposição de Manifesto de Carga
Uma transportadora parceira enviou a seguinte linha de planilha desnormalizada:
CodCarga: 8810 | Data: 10/10/2026 | ID_Filial: 3 | NomeFilial: Curitiba | TelefoneFilial: (41) 3300-8800 | ID_Motorista: 15 | NomeMotorista: Carlos Mendes | CNH: 123456789 | ID_Cliente: 42 | RazaoSocial: Nestlé Brasil | ValorFrete: 8.500,00
Demonstre a separação formal dessa linha nas quatro tabelas normalizadas em 3FN criadas no seu banco de dados, indicando qual tabela armazena cada campo e qual campo atua como chave de ligação.
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas reflexivas abaixo com base no conteúdo deste capítulo. Ao concluir, apresente o caderno ao professor para conferência e visto.
- Quem formulou a Teoria da Normalização de Dados e em qual década essa metodologia foi apresentada ao mundo?
- Descreva com um exemplo prático de logística o que é a Anomalia de Atualização em uma planilha de fretes.
- Como ocorre a Anomalia de Exclusão quando apagamos um registro de uma tabela não-normalizada?
- Quais são as três exigências fundamentais para que uma tabela seja considerada na 1ª Forma Normal (1FN)?
- O que significa o princípio da Atomicidade de Campos na 1FN?
- Qual é a regra essencial para que uma tabela atinja a 2ª Forma Normal (2FN) e quando ela é aplicada?
- Explique a regra de ouro da 3ª Forma Normal (3FN) formulada por Bill Kent.
- Por que campos como
NomeClienteeTelefoneMotoristaNÃO devem existir dentro da tabelatbl_OrdensFreteem uma arquitetura 3FN? - Na Prática Obrigatória 2, por que os campos
ID_ClienteeID_Motoristaforam configurados com o tipo de dados “Número (Inteiro Longo)” em vez de Autonumeração? - No Desafio de Fixação, como as quatro tabelas normalizadas conseguem se reconectar para gerar o relatório final de manifesto de carga?