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

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-01 para RT-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:#721c24

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?
    1. 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.
    2. Impossibilidade de Desfazer: Registros excluídos em um SGBD não vão para a Lixeira do Windows!
    3. 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 DELETE do 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 Ativo ou Status. Quando a empresa encerra negócios com um cliente ou vende um veículo, apenas marcamos Ativo = 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)

  1. Acesse Criar ➔ Design da Tabela.
  2. 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.
  3. Salve a tabela com o nome: tbl_Rotas.

Passo 2: Cadastrando as Rotas Principais

  1. Abra tbl_Rotas no 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

🛠️ 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:

  1. Abra a tabela tbl_OrdensFrete no Modo Design.
  2. Adicione o campo de ligação:
    • Nome do Campo: Codigo_Rota ➔ Tipo: Texto Curto ➔ Tamanho: 10, Requerido: Sim.
  3. Salve e feche tbl_OrdensFrete.
  4. Abra a Janela de Relações (Ferramentas de Banco de Dados ➔ Relações).
  5. Clique em Adicionar Tabelas e inclua tbl_Rotas.
  6. Arraste Codigo_Rota de tbl_Rotas para Codigo_Rota de tbl_OrdensFrete.
  7. 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!)
  8. Clique em Criar e salve o diagrama.
  9. Teste da Atualização:
    • Abra tbl_OrdensFrete e atribua a rota RT-01 a um frete existente.
    • Feche tbl_OrdensFrete e abra tbl_Rotas.
    • Altere o código da rota na primeira linha de RT-01 para: RT-SUL-408 e pressione Enter.
    • Abra novamente tbl_OrdensFrete: observe que o código foi alterado em tempo real para RT-SUL-408 sem nenhum erro!

✅ 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:

  1. Abra a tabela tbl_Clientes no Modo Folha de Dados.
  2. Identifique um cliente que já possua ordens de frete cadastradas em tbl_OrdensFrete (ex: o cliente de ID 1).
  3. Selecione a linha inteira desse cliente clicando no seletor cinza à esquerda.
  4. Pressione a tecla Delete (ou clique no botão Excluir Registro na faixa de opções).
  5. 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.”
  6. O Access recusa a exclusão. O cliente não pode ser apagado porque sua história fiscal está protegida!
  7. 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)

  1. Salve todas as alterações e feche o Access.
  2. Nomeie o arquivo: FastLog_BD_Cap06_SeuNome_SeuSobrenome.accdb.
  3. Acesse o Microsoft Teams na sua disciplina técnica.
  4. Abra a tarefa: “Banco de Dados - Cap 06: Cascata e Integridade Operacional”.
  5. Anexe o seu arquivo .accdb e 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:

  1. Abra a tabela tbl_Clientes no Modo Design e certifique-se de que existe o campo Cliente_Ativo (tipo Sim/Não, Valor Padrão: Sim).
  2. Abra a tabela tbl_Veiculos no Modo Design e adicione o campo Veiculo_Ativo (tipo Sim/Não, Valor Padrão: Sim).
  3. Abra a tabela tbl_Motoristas no Modo Design e verifique o campo Status_Disponivel (tipo Sim/Não).
  4. 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”.

🔑 Revelar Gabarito Oficial e Material de Apoio da Aula (Clique para expandir)
💡 Incentivo Pedagógico: Tente resolver as práticas e o desafio de fixação por conta própria antes de abrir o gabarito. Seus erros e tentativas durante o laboratório são a chave para a consolidação real do aprendizado!

Procedimento Oficial de Inativação Lógica (FastLog S.A.):

1
2
3
4
5
6
7
Procedimento Operacional Padrão (POP - Frotas):
Quando o caminhão de placa 'BRA2E19' sofrer sinistro com perda total ou for vendido:
1. O analista de frotas NUNCA deve clicar no comando 'Excluir Registro'.
2. Ele deve abrir o cadastro do veículo e desmarcar a caixa de seleção do campo 'Veiculo_Ativo' (mudando o valor para Falso/Não).
3. Efeito Prático:
   - Todas as 1.480 viagens, fretes faturados e manutenções passadas do caminhão permanecem 100% preservadas para a contabilidade e fiscalização da SEFAZ.
   - Nas novas emissões de frete do dia a dia, o formulário de despacho filtrará apenas 'Veiculo_Ativo = Sim', impedindo que o veículo sinistrado seja escalado para novas viagens.

📥 Download dos Scripts desta Aula:
Baixe o arquivo de script Capitulo_06.sql ou o pacote compactado (.zip) com os comandos SQL e esquemas da aula.


📝 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.

  1. O que faz o mecanismo de Propagar Atualização dos Campos Relacionados (Cascade Update) no Access?
  2. Em quais situações a Atualização em Cascata é extremamente útil em bancos de dados corporativos?
  3. 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?
  4. 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?
  5. 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?
  6. Diferencie o conceito de Exclusão Física (Hard Delete) do conceito de Exclusão Lógica (Soft Delete).
  7. Como implementamos a Exclusão Lógica na prática através da modelagem de tabelas no Access?
  8. O que aconteceu na Prática Obrigatória 2 quando você tentou excluir um cliente que já possuía ordens de frete cadastradas?
  9. Na Prática Obrigatória 1, por que a alteração do código da rota na tabela mãe tbl_Rotas refletiu imediatamente na tabela filha tbl_OrdensFrete?
  10. 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?