Capítulo 03: Regras de Negócio e Validação de Dados: Máscaras e Restrições de Tabela

🎯 Objetivo da Aula

Nesta aula, você aprenderá a construir uma verdadeira fortaleza de segurança em torno dos seus dados, utilizando as ferramentas de Validação Defensiva do Microsoft Access. No laboratório de informática, você aprenderá a configurar Máscaras de Entrada (Input Masks) para padronizar a digitação de documentos e códigos logísticos, e a escrever Regras de Validação (Validation Rules) com expressões booleanas que impedem a gravação de fretes negativos, pesos impossíveis ou datas incoerentes.

Ao final desta aula, seu banco de dados rejeitará automaticamente tentativas de fraude ou desatenção dos operadores, garantindo conformidade com a legislação fiscal e as normas internas da FastLog S.A.


🏢 Cenário Prático (FastLog S.A.)

Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: Um faturista novato no Centro de Distribuição digitou por engano um frete de Campinas para Porto Alegre com o valor de R$ -4.500,00 (com o sinal de menos). A nota fiscal foi emitida com valor negativo, gerando o travamento do faturamento na SEFAZ e uma fiscalização contábil que reteve três carretas no posto fiscal da divisa de estado por 48 horas. Além disso, no cadastro de clientes, cada vendedor digitava o CNPJ como queria: uns com pontos e traços, outros com barra e outros apenas com números soltos, quebrando os relatórios de conciliação bancária.
Sua Missão: Como administrador de banco de dados (DBA), você implementará Máscaras de Entrada padronizadas para CNPJ e CEP, criará uma Regra de Validação impedindo fretes menores ou iguais a zero e configurará uma restrição entre colunas para impedir que a data de entrega de uma carga seja anterior à data do seu despacho.


🧠 Fundamentos: A Teoria Traduzida

1. O Princípio da Validação na Camada de Dados

Muitos sistemas confiam a validação de regras apenas às telas (formulários) ou às planilhas. No entanto, se um operador importar uma planilha externa ou colar dados diretamente na tabela, um sistema frágil aceitará dados corrompidos. A melhor prática de engenharia de software determina que a própria tabela do banco de dados deve recusar dados que violem as regras do negócio:

flowchart LR
    INPUT["👤 Operador / Importação Externa<br/>Digita: Frete = -4500 ou Data Inválida"] --> VAL{"🛡️ Motor de Validação do Access<br/>[Valor_Frete] > 0"}
    VAL -- "Regra Satisfeita (True)" --> TAB[("💾 Tabela tbl_OrdensFrete<br/>Registro Gravado")]
    VAL -- "Regra Violada (False)" --> MSG["❌ Alerta Customizado Bloqueante<br/>Gravação Rejeitada pelo SGBD"]

    style INPUT fill:#1a365d,stroke:#fff,stroke-width:2px,color:#fff
    style VAL fill:#e67e22,stroke:#fff,stroke-width:2px,color:#fff
    style TAB fill:#27ae60,stroke:#fff,stroke-width:2px,color:#fff
    style MSG fill:#c0392b,stroke:#fff,stroke-width:2px,color:#fff

2. Tabela de Símbolos das Máscaras de Entrada (Input Masks)

A Máscara de Entrada formata a digitação no momento em que o operador tecla, inserindo automaticamente pontuações fixas:

SímboloSignificado no AccessExemplo Prático
0Dígito obrigatório (0 a 9)000.000.000-00 (CPF completo obrigatório)
9Dígito opcional (0 a 9 ou espaço)(99) 00000-0000 (DDD opcional)
LLetra obrigatória (A a Z)LLL-0000 (Placa padrão anterior)
?Letra opcionalL? (Sigla de filial com 1 ou 2 letras)
ALetra ou dígito obrigatórioLLL0A00 (Placa padrão Mercosul)
aLetra ou dígito opcionalAAAA-aaaa
>Converte todos os caracteres seguintes para MAIÚSCULAS>LLL0A00 (Garante placa maiúscula)
<Converte todos os caracteres seguintes para minúsculas<L

3. Regra de Validação (Validation Rule) vs. Texto de Validação

  • Regra de Validação: É a expressão booleana que deve retornar Verdadeiro (True) para que o registro seja aceito pelo Access.
    • Exemplos: >0, >=#01/01/2026#, In ('SP','RJ','MG','PR'), Entre 1 E 45000.
  • Texto de Validação: É a mensagem em português claro e amigável exibida para o operador quando a regra é violada.
    • Se você não preencher o texto de validação, o Access exibirá uma mensagem técnica confusa com o código interno do erro.

📖 Exemplo Guiado: Passo a Passo no Laboratório

Abra o arquivo FastLog_Database.accdb.

Passo 1: Abrindo a Tabela no Modo Design

  1. No Painel de Navegação à esquerda, clique com o botão direito do mouse sobre tbl_Clientes.
  2. No menu de contexto, clique em Modo Design (Design View).
  3. Clique sobre o campo CNPJ.

Passo 2: Configurando a Máscara de Entrada de CNPJ

  1. Na parte inferior (Propriedades do Campo), localize a linha Máscara de Entrada.
  2. Digite exatamente a máscara canônica:
    1
    
    00\.000\.000\/0000\-00;0;_
    (A barra invertida \ indica que o ponto, a barra e o traço são caracteres literais fixos. O ;0; armazena as pontuações na tabela e o _ é o caractere de preenchimento).
  3. Clique na linha Texto de Validação e digite: "O CNPJ deve conter exatamente 14 dígitos numéricos."
  4. Pressione Ctrl + B para salvar a tabela.

🛠️ Prática Obrigatória 1: Máscaras de Entrada e Regras na Tabela de Clientes

Agora você protegerá o campo de Estado (UF) e o Limite de Crédito contra valores inválidos.

Passo a Passo no Computador:

  1. Com tbl_Clientes no Modo Design:
  2. Validação do Campo UF:
    • Clique sobre o campo UF.
    • Na linha Máscara de Entrada, digite: >LL (obriga duas letras e converte para maiúsculas).
    • Na linha Regra de Validação, digite:
      1
      
      In ("SP", "RJ", "MG", "PR", "SC", "RS", "MS", "GO", "ES", "BA")
    • Na linha Texto de Validação, digite: "A FastLog atua apenas nos estados das regiões Sul, Sudeste e Centro-Oeste autorizados."
  3. Validação do Limite de Crédito:
    • Clique sobre o campo Limite_Credito.
    • Na linha Regra de Validação, digite: >= 0 E <= 500000
    • Na linha Texto de Validação, digite: "O limite de crédito não pode ser negativo e o teto máximo operacional é de R$ 500.000,00."
  4. Salve a tabela e mude para o Modo Folha de Dados.
  5. Teste digitar um cliente com UF "XX" e tente mudar de linha: observe a mensagem personalizada barrando a operação!
  6. Teste digitar um limite de crédito de R$ -100,00: observe a recusa imediata.

✅ Resultado Esperado (Prática 1):

A tabela tbl_Clientes formata o CNPJ com pontuações automáticas na digitação e rejeita estados fora da área de atuação ou limites de crédito negativos.


🛠️ Prática Obrigatória 2: Criação da Tabela de Ordens de Frete com Validação de Nível de Registro

Você criará a tabela central de transporte: tbl_OrdensFrete, aplicando uma Regra de Validação de Registro que compara duas colunas diferentes.

Passo a Passo no Computador:

  1. Acesse Criar ➔ Design da Tabela.
  2. Adicione os seguintes campos:
Nome do CampoTipo de DadosPropriedades Técnicas
ID_OrdemFreteAutonumeraçãoChave Primária (PK)
Data_DespachoData e HoraFormato: Data Abreviada, Valor Padrão: =Data()
Data_Entrega_PrevistaData e HoraFormato: Data Abreviada, Requerido: Sim
Valor_FreteMoedaRegra de Validação: > 0, Texto: "O frete deve ser maior que zero."
Peso_Liquido_KgNúmero (Longo)Regra de Validação: > 0 E <= 45000, Requerido: Sim
Status_OrdemTexto CurtoTamanho: 20, Valor Padrão: "Agendado"
  1. Configurando a Regra de Validação no Nível da Tabela:
    • Se a janela de propriedades da tabela não estiver visível, pressione F4 (ou clique no botão Folha de Propriedades na faixa de opções).
    • Na Folha de Propriedades da Tabela (à direita), localize a linha Regra de Validação.
    • Digite a expressão comparando as duas datas:
      1
      
      [Data_Entrega_Prevista] >= [Data_Despacho]
    • Na linha Texto de Validação, digite: "A data de entrega prevista não pode ser anterior à data de despacho da carga!"
  2. Salve a tabela com o nome: tbl_OrdensFrete.
  3. Mude para o Modo Folha de Dados e tente agendar uma carga com Despacho em 10/10/2026 e Entrega em 05/10/2026.
  4. Observe o Access bloquear a gravação exibindo o seu texto amigável!

✅ Resultado Esperado (Prática 2):

A tabela tbl_OrdensFrete impede qualquer transporte no tempo reverso e garante que nenhum frete com valor zero ou negativo seja faturado.


📤 Instruções de Entrega (Microsoft Teams)

  1. Feche todas as tabelas e salve o arquivo.
  2. Nomeie o arquivo como: FastLog_BD_Cap03_SeuNome_SeuSobrenome.accdb.
  3. Acesse o Microsoft Teams na disciplina de Banco de Dados.
  4. Localize a tarefa: “Banco de Dados - Cap 03: Máscaras e Regras de Validação”.
  5. Anexe o seu arquivo .accdb e conclua a entrega clicando em Entregar (Turn In).

💡 Checkpoint de Gestão & TI

Por que esta aula representa um salto qualitativo para a transportadora? Porque no transporte rodoviário de cargas, 80% das glosas fiscais e atrasos em entregas decorrem de erros de digitação na portaria. Ao transferir as regras de negócio para a camada de dados do SGBD, o sistema assume o papel de auditor em tempo real, sem depender do humor ou do cansaço do operador no final do turno da madrugada.


🔥 Desafio de Fixação: Máscara Híbrida para Placas de Veículos

A frota brasileira convive com dois padrões de placas rodoviárias:

  • Padrão Antigo: 3 letras, traço e 4 números (ABC-1234).
  • Padrão Mercosul: 3 letras, 1 número, 1 letra e 2 números (ABC1D23).

Configure o campo Placa da tabela tbl_Veiculos no Modo Design para atender os seguintes requisitos:

  1. Máscara de Entrada: >LLL0A00;;_ (onde > força maiúsculas, L exige letras, 0 exige dígitos e A aceita tanto letra quanto número, acomodando perfeitamente o padrão Mercosul e o antigo sem hífen).
  2. Adicione uma Regra de Validação no campo Capacidade_Kg da mesma tabela para permitir apenas caminhões com capacidade entre 1000 e 45000 kg.
  3. Configure o Texto de Validação correspondente.

🔑 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!

Configuração Oficial das Propriedades de tbl_Veiculos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Campo: Placa
- Tamanho do Campo: 7
- Máscara de Entrada: >LLL0A00;;_
- Requerido: Sim
- Permitir Comprimento Zero: Não

Campo: Capacidade_Kg
- Tipo de Dados: Número
- Tamanho do Campo: Inteiro Longo
- Regra de Validação: >=1000 E <=45000
- Texto de Validação: "A capacidade de carga deve estar compreendida entre 1.000 kg (VUC) e 45.000 kg (Bitrem Regulamentar)."

📥 Download dos Scripts desta Aula:
Baixe o arquivo de script Capitulo_03.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. Por que é considerado mais seguro validar regras de negócio diretamente nas propriedades da tabela do que apenas nas telas do sistema?
  2. No Cenário Prático da FastLog, qual foi o transtorno operacional causado pelo faturamento de um frete com valor negativo?
  3. O que é uma Máscara de Entrada no Access e qual é a sua principal utilidade prática?
  4. Diferencie a função do caractere coringa 0 e do caractere 9 na construção de uma Máscara de Entrada.
  5. Qual é o papel do símbolo > colocado no início de uma máscara de texto?
  6. O que representa a propriedade Regra de Validação (Validation Rule) de um campo?
  7. Por que é fundamental preencher a propriedade Texto de Validação sempre que se cria uma regra de validação?
  8. Qual operador lógico utilizamos para restringir um campo de Estado (UF) a uma lista predeterminada de siglas válidas?
  9. Como se cria uma Regra de Validação de Nível de Tabela para comparar os valores de dois campos distintos (como Data_Despacho e Data_Entrega_Prevista)?
  10. No Desafio de Fixação, como a máscara >LLL0A00 consegue acomodar tanto placas no formato tradicional quanto no padrão Mercosul?