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:#fff2. 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ímbolo | Significado no Access | Exemplo Prático |
|---|---|---|
0 | Dígito obrigatório (0 a 9) | 000.000.000-00 (CPF completo obrigatório) |
9 | Dígito opcional (0 a 9 ou espaço) | (99) 00000-0000 (DDD opcional) |
L | Letra obrigatória (A a Z) | LLL-0000 (Placa padrão anterior) |
? | Letra opcional | L? (Sigla de filial com 1 ou 2 letras) |
A | Letra ou dígito obrigatório | LLL0A00 (Placa padrão Mercosul) |
a | Letra ou dígito opcional | AAAA-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.
- Exemplos:
- 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
- No Painel de Navegação à esquerda, clique com o botão direito do mouse sobre
tbl_Clientes. - No menu de contexto, clique em Modo Design (Design View).
- Clique sobre o campo
CNPJ.
Passo 2: Configurando a Máscara de Entrada de CNPJ
- Na parte inferior (Propriedades do Campo), localize a linha Máscara de Entrada.
- Digite exatamente a máscara canônica:(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). - Clique na linha Texto de Validação e digite:
"O CNPJ deve conter exatamente 14 dígitos numéricos." - Pressione
Ctrl + Bpara 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:
- Com
tbl_Clientesno Modo Design: - 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:
- Na linha Texto de Validação, digite:
"A FastLog atua apenas nos estados das regiões Sul, Sudeste e Centro-Oeste autorizados."
- Clique sobre o campo
- 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."
- Clique sobre o campo
- Salve a tabela e mude para o Modo Folha de Dados.
- Teste digitar um cliente com UF
"XX"e tente mudar de linha: observe a mensagem personalizada barrando a operação! - 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:
- Acesse Criar ➔ Design da Tabela.
- Adicione os seguintes campos:
| Nome do Campo | Tipo de Dados | Propriedades Técnicas |
|---|---|---|
ID_OrdemFrete | Autonumeração | Chave Primária (PK) |
Data_Despacho | Data e Hora | Formato: Data Abreviada, Valor Padrão: =Data() |
Data_Entrega_Prevista | Data e Hora | Formato: Data Abreviada, Requerido: Sim |
Valor_Frete | Moeda | Regra de Validação: > 0, Texto: "O frete deve ser maior que zero." |
Peso_Liquido_Kg | Número (Longo) | Regra de Validação: > 0 E <= 45000, Requerido: Sim |
Status_Ordem | Texto Curto | Tamanho: 20, Valor Padrão: "Agendado" |
- 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:
- Na linha Texto de Validação, digite:
"A data de entrega prevista não pode ser anterior à data de despacho da carga!"
- Se a janela de propriedades da tabela não estiver visível, pressione
- Salve a tabela com o nome:
tbl_OrdensFrete. - Mude para o Modo Folha de Dados e tente agendar uma carga com Despacho em
10/10/2026e Entrega em05/10/2026. - 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)
- Feche todas as tabelas e salve o arquivo.
- Nomeie o arquivo como:
FastLog_BD_Cap03_SeuNome_SeuSobrenome.accdb. - Acesse o Microsoft Teams na disciplina de Banco de Dados.
- Localize a tarefa: “Banco de Dados - Cap 03: Máscaras e Regras de Validação”.
- Anexe o seu arquivo
.accdbe 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:
- Máscara de Entrada:
>LLL0A00;;_(onde>força maiúsculas,Lexige letras,0exige dígitos eAaceita tanto letra quanto número, acomodando perfeitamente o padrão Mercosul e o antigo sem hífen). - Adicione uma Regra de Validação no campo
Capacidade_Kgda mesma tabela para permitir apenas caminhões com capacidade entre1000e45000kg. - Configure o Texto de Validação correspondente.
📝 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.
- Por que é considerado mais seguro validar regras de negócio diretamente nas propriedades da tabela do que apenas nas telas do sistema?
- No Cenário Prático da FastLog, qual foi o transtorno operacional causado pelo faturamento de um frete com valor negativo?
- O que é uma Máscara de Entrada no Access e qual é a sua principal utilidade prática?
- Diferencie a função do caractere coringa
0e do caractere9na construção de uma Máscara de Entrada. - Qual é o papel do símbolo
>colocado no início de uma máscara de texto? - O que representa a propriedade Regra de Validação (Validation Rule) de um campo?
- Por que é fundamental preencher a propriedade Texto de Validação sempre que se cria uma regra de validação?
- Qual operador lógico utilizamos para restringir um campo de Estado (UF) a uma lista predeterminada de siglas válidas?
- Como se cria uma Regra de Validação de Nível de Tabela para comparar os valores de dois campos distintos (como
Data_DespachoeData_Entrega_Prevista)? - No Desafio de Fixação, como a máscara
>LLL0A00consegue acomodar tanto placas no formato tradicional quanto no padrão Mercosul?