Capítulo 06: Atualização e Exclusão em Cascata: Manutenção da Coerência Operacional
🎯 Objetivo da Aula
Nesta aula, você aprofundará seus conhecimentos sobre a mecânica interna da Integridade Referencial no Microsoft Access. No laboratório de informática, você aprenderá quando ativar as opções avançadas de Atualização em Cascata (Cascade Update) e Exclusão em Cascata (Cascade Delete). Você analisará os riscos críticos de conformidade legal e auditoria contábil, compreendendo por que empresas sérias adotam a Exclusão Lógica (Soft Delete) para preservar o histórico fiscal, impedindo a perda catastrófica de dados em lote.
Ao final desta aula, você saberá exatamente como propagar mudanças de códigos operacionais em cascata e como blindar o repositório da FastLog S.A. contra exclusões acidentais que poderiam violar as regras da SEFAZ e da LGPD.
🏢 Cenário Prático (FastLog S.A.)
Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: Em uma filial regional, o operador de frotas vendeu um caminhão antigo (placa FLG-2015). Para organizar a tela, ele abriu a tabela de veículos e simplesmente clicou em “Excluir Registro”. Como o relacionamento estava configurado de forma amadora com “Propagar Exclusão em Cascata”, o Access apagou instantaneamente todas as 1.480 ordens de frete, conhecimentos de transporte (CT-e) e notas fiscais que aquele caminhão havia realizado nos últimos 5 anos! Quando os auditores da Receita Federal chegaram para verificar o faturamento da empresa, os registros haviam sumido do banco de dados, gerando uma autuação fiscal de R$ 420.000,00 por extravio de escrituração contábil.
Sua Missão: Como gestor de governança de dados, você reconfigurará os relacionamentos do banco de dados, desativando a exclusão em cascata em cadastros fiscais e implementando a política corporativa de Inativação Lógica (campo Ativo = Não), protegendo 100% do histórico da transportadora.
🧠 Fundamentos: A Teoria Traduzida
1. Atualização em Cascata (Cascade Update Related Fields)
Quando uma chave primária é alterada na tabela mãe, o Access procura automaticamente todas as ocorrências correspondentes daquela chave nas tabelas filhas e atualiza os valores sem quebrar os vínculos.
- Onde ela brilha: Em tabelas que utilizam chaves primárias textuais ou códigos de negócio (ex: o código da rota muda de
RT-01paraRT-CAMP-SUL). Todas as 10.000 ordens de frete associadas àquela rota são renomeadas em milissegundos!
flowchart TD
subgraph ATUALIZACAO["⚡ Atualização em Cascata (Segura e Útil)"]
M1["Tabela Mãe: tbl_Rotas<br/>Código 'RT-01' alterado para 'RT-SP-PR'"] -->|Propagação Automática| F1["Tabela Filha: tbl_OrdensFrete<br/>5.000 registros atualizados instantaneamente"]
end
subgraph EXCLUSAO["⚠️ Exclusão em Cascata (Perigo Mortal em Auditoria)"]
M2["Tabela Mãe: tbl_Veiculos<br/>Operador exclui o caminhão 'BRA2E19'"] -.->|DELETA TUDO!| F2["Tabela Filha: tbl_OrdensFrete<br/>1.480 fretes e notas fiscais apagados para sempre!"]
end
style ATUALIZACAO fill:#d4edda,stroke:#155724,stroke-width:2px,color:#155724
style EXCLUSAO fill:#f8d7da,stroke:#721c24,stroke-width:2px,color:#721c242. O Perigo da Exclusão em Cascata (Cascade Delete Related Records)
Se marcada, quando você exclui uma linha na tabela mãe (ex: um Cliente ou um Veículo), o Access APAGA EM SILÊNCIO todas as linhas nas tabelas filhas que faziam referência àquele registro.
- Por que isso é proibido em sistemas ERP/SIG?
- Violação Contábil e Fiscal: A legislação exige que notas fiscais e conhecimentos de transporte sejam guardados por no mínimo 5 anos.
- Impossibilidade de Desfazer: Registros excluídos em um SGBD não vão para a Lixeira do Windows!
- Conformidade LGPD: Exclusões devem ser auditadas e planejadas, nunca automáticas em cascata sobre dados de faturamento.
3. A Solução Corporativa: Exclusão Física vs. Exclusão Lógica (Soft Delete)
- Exclusão Física (Hard Delete): O comando
DELETEdo banco remove os bytes da tabela definitivamente. - Exclusão Lógica (Soft Delete): O registro NUNCA é apagado. A tabela possui uma coluna booleana (tipo Sim/Não) chamada
AtivoouStatus. Quando a empresa encerra negócios com um cliente ou vende um veículo, apenas marcamosAtivo = Não.- As telas operacionais filtram apenas os registros ativos, mas todo o histórico financeiro e fiscal do passado permanece intacto para a auditoria!
📖 Exemplo Guiado: Passo a Passo no Laboratório
Abra o arquivo FastLog_Database.accdb. Vamos criar a tabela de rotas operacionais e testar a atualização em cascata.
Passo 1: Criando a Tabela de Rotas (tbl_Rotas)
- Acesse Criar ➔ Design da Tabela.
- Adicione os campos:
Codigo_Rota: Texto Curto, Tamanho:10, Chave Primária 🔑 (Ex: “RT-SP-PR”).Descricao_Trajeto: Texto Curto, Tamanho:80, Requerido: Sim.Distancia_Media_Km: Número, Tamanho: Inteiro, Requerido: Sim.Tempo_Estimado_Horas: Número, Tamanho: Byte.Pedagio_Previsto: Moeda.
- Salve a tabela com o nome:
tbl_Rotas.
Passo 2: Cadastrando as Rotas Principais
- Abra
tbl_Rotasno Modo Folha de Dados e insira:- Linha 1:
RT-01|São Paulo (SP) ➔ Curitiba (PR)|408|6|R$ 145,00 - Linha 2:
RT-02|Campinas (SP) ➔ Rio de Janeiro (RJ)|510|8|R$ 210,00
- Linha 1:
🛠️ Prática Obrigatória 1: Configurando a Atualização em Cascata
Agora você vinculará a rota às ordens de frete com a propagação de atualização ativada.
Passo a Passo no Computador:
- Abra a tabela
tbl_OrdensFreteno Modo Design. - Adicione o campo de ligação:
- Nome do Campo:
Codigo_Rota➔ Tipo: Texto Curto ➔ Tamanho:10, Requerido: Sim.
- Nome do Campo:
- Salve e feche
tbl_OrdensFrete. - Abra a Janela de Relações (Ferramentas de Banco de Dados ➔ Relações).
- Clique em Adicionar Tabelas e inclua
tbl_Rotas. - Arraste
Codigo_Rotadetbl_RotasparaCodigo_Rotadetbl_OrdensFrete. - Na janela Editar Relações, configure:
- ☑ Exigir Integridade Referencial
- ☑ Propagar Atualização dos Campos Relacionados (Cascade Update)
- ☐ Propagar Exclusão dos Registros Relacionados (DEIXE DESMARCADO!)
- Clique em Criar e salve o diagrama.
- Teste da Atualização:
- Abra
tbl_OrdensFretee atribua a rotaRT-01a um frete existente. - Feche
tbl_OrdensFretee abratbl_Rotas. - Altere o código da rota na primeira linha de
RT-01para:RT-SUL-408e pressioneEnter. - Abra novamente
tbl_OrdensFrete: observe que o código foi alterado em tempo real paraRT-SUL-408sem nenhum erro!
- Abra
✅ Resultado Esperado (Prática 1):
A alteração do código da rota na tabela mãe atualizou todas as tabelas filhas automaticamente através do mecanismo de propagação em cascata.
🛠️ Prática Obrigatória 2: Teste de Proteção contra Exclusão Indevida
Agora você verificará a barreira de segurança que impede a exclusão acidental de dados com histórico.
Passo a Passo no Computador:
- Abra a tabela
tbl_Clientesno Modo Folha de Dados. - Identifique um cliente que já possua ordens de frete cadastradas em
tbl_OrdensFrete(ex: o cliente de ID1). - Selecione a linha inteira desse cliente clicando no seletor cinza à esquerda.
- Pressione a tecla
Delete(ou clique no botão Excluir Registro na faixa de opções). - Veja a reação do Access: O SGBD emitirá um alerta categórico: “Não é possível excluir ou alterar o registro porque a tabela ’tbl_OrdensFrete’ inclui registros relacionados.”
- O Access recusa a exclusão. O cliente não pode ser apagado porque sua história fiscal está protegida!
- Clique em OK para cancelar a exclusão.
✅ Resultado Esperado (Prática 2):
O Access impede a exclusão de clientes com vínculos ativos, garantindo que nenhum frete ou faturamento fique órfão na empresa.
📤 Instruções de Entrega (Microsoft Teams)
- Salve todas as alterações e feche o Access.
- Nomeie o arquivo:
FastLog_BD_Cap06_SeuNome_SeuSobrenome.accdb. - Acesse o Microsoft Teams na sua disciplina técnica.
- Abra a tarefa: “Banco de Dados - Cap 06: Cascata e Integridade Operacional”.
- Anexe o seu arquivo
.accdbe confirme o envio clicando em Entregar (Turn In).
💡 Checkpoint de Gestão & TI
Por que esta aula é uma das mais importantes para a governança corporativa? Porque no ambiente empresarial moderno (regido pela LGPD e pelas normas internacionais SOX), a perda de rastreabilidade de dados gera demissão por justa causa e processos judiciais. Saber a hora certa de usar Atualização em Cascata e ter a maturidade de proibir a Exclusão Física é a marca registrada de um profissional de TI e gestão de alto nível.
🔥 Desafio de Fixação: Implementando a Exclusão Lógica (Soft Delete)
Para operacionalizar a política corporativa de inativação segura:
- Abra a tabela
tbl_Clientesno Modo Design e certifique-se de que existe o campoCliente_Ativo(tipo Sim/Não, Valor Padrão: Sim). - Abra a tabela
tbl_Veiculosno Modo Design e adicione o campoVeiculo_Ativo(tipo Sim/Não, Valor Padrão: Sim). - Abra a tabela
tbl_Motoristasno Modo Design e verifique o campoStatus_Disponivel(tipo Sim/Não). - Explique em um parágrafo como o departamento operacional da FastLog deve proceder quando um caminhão sofrer sinistro com perda total, sem jamais utilizar o botão “Excluir”.
📝 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.
- O que faz o mecanismo de Propagar Atualização dos Campos Relacionados (Cascade Update) no Access?
- Em quais situações a Atualização em Cascata é extremamente útil em bancos de dados corporativos?
- O que acontece quando um operador exclui um registro em uma tabela mãe cuja relação está com a opção Propagar Exclusão dos Registros Relacionados ativada?
- No Cenário Prático da FastLog, qual foi o valor da multa fiscal aplicada à empresa após a exclusão indevida do caminhão de frotas?
- Por que as normas fiscais da SEFAZ e os padrões de auditoria contábil proíbem a exclusão física de registros vinculados a notas fiscais e fretes?
- Diferencie o conceito de Exclusão Física (Hard Delete) do conceito de Exclusão Lógica (Soft Delete).
- Como implementamos a Exclusão Lógica na prática através da modelagem de tabelas no Access?
- O que aconteceu na Prática Obrigatória 2 quando você tentou excluir um cliente que já possuía ordens de frete cadastradas?
- Na Prática Obrigatória 1, por que a alteração do código da rota na tabela mãe
tbl_Rotasrefletiu imediatamente na tabela filhatbl_OrdensFrete? - No Desafio de Fixação, como a política de inativação lógica impede que um caminhão vendido seja escalado para novas viagens sem apagar o passado dele?