Lista de Desafios de Fixação e Gabaritos (20 Capítulos)

Estes desafios espelham exatamente o "🔥 Desafio de Fixação" apresentado ao final de cada capítulo do curso de Banco de Dados Relacional & SQL com Access. Eles servem como consulta rápida para o professor ou como material de aprofundamento para alunos que concluem as práticas de laboratório antes do tempo previsto.


🧱 Módulo 1: Fundamentos & Modelagem Relacional (Cap. 01 a 04)

Capítulo 01 - Auditoria de Inconsistências na Planilha da Portaria

  • Enunciado: Identifique e documente três falhas graves de consistência na planilha importada da portaria (Portaria_Bruta.xlsx) que justificam a migração para o Microsoft Access: duplicidade de placas, divergência no nome de clientes e ausência de identificador numérico único.
  • Gabarito:
1
2
3
1. Ausência de Chave Primária: O mesmo motorista 'Carlos Eduardo' aparece com 4 entregas sem um ID único, impossibilitando distinguir homônimos.
2. Inconsistência de Digitação (Redundância): O cliente 'Supermercados Alvorada S.A.' aparece grafado de três formas: 'Superm. Alvorada', 'Alvorada Supermercados' e 'Supermercado Alvorada'.
3. Falta de Restrição de Domínio: A coluna 'Peso_Entrada_Kg' contém células preenchidas com '12 toneladas' (texto) e outras com '12000' (número), inviabilizando somatórios matemáticos diretos.

Capítulo 02 - Modelagem Defensiva da Tabela de Motoristas

  • Enunciado: Crie a tabela tbl_Motoristas no Modo Design do Access com os seguintes campos: ID_Motorista (Autonumeração, PK), Nome_Completo (Texto Curto, tamanho 80, Requerido), CPF (Texto Curto, tamanho 14, Requerido, Indexado sem duplicação) e Data_Admissao (Data/Hora, formato Data Abreviada, Valor Padrão =Data()).
  • Gabarito (Definição no Modo Design):
1
2
3
4
Campo: ID_Motorista | Tipo: Autonumeração | Chave Primária (PK)
Campo: Nome_Completo | Tipo: Texto Curto | Tamanho: 80 | Requerido: Sim
Campo: CPF | Tipo: Texto Curto | Tamanho: 14 | Requerido: Sim | Indexado: Sim (Duplicação Não Autorizada)
Campo: Data_Admissao | Tipo: Data/Hora | Formato: Data Abreviada | Valor Padrão: =Data()

Capítulo 03 - Regra de Validação para Capacidade Máxima de Carga

  • Enunciado: Na tabela tbl_Veiculos, adicione uma Regra de Validação no campo Capacidade_Kg para permitir apenas valores estritamente positivos e menores ou iguais a 45.000 kg (capacidade limite de bitrem rodoviário). Adicione uma mensagem de texto de validação personalizada.
  • Gabarito:
1
2
3
Propriedade do Campo 'Capacidade_Kg':
- Regra de Validação: >0 E <=45000
- Texto de Validação: "A capacidade deve ser maior que zero e não pode exceder 45.000 kg (limite regulamentar FastLog)."

Capítulo 04 - Normalização de Ordem de Despacho (1FN a 3FN)

  • Enunciado: Uma planilha de fretes contém os campos: CodFrete, Data, NomeCliente, CNPJ, CidadeCliente, PlacaVeiculo, ModeloVeiculo, CapacidadeVeiculo, ValorFrete. Demonstre a aplicação da 3ª Forma Normal (3FN), dividindo essa estrutura em três tabelas relacionais com suas respectivas chaves primárias e estrangeiras.
  • Gabarito:
1
2
3
4
5
6
7
8
1. tbl_Clientes (Chave: ID_Cliente [PK])
   - ID_Cliente (PK), NomeCliente, CNPJ, CidadeCliente

2. tbl_Veiculos (Chave: PlacaVeiculo [PK])
   - PlacaVeiculo (PK), ModeloVeiculo, CapacidadeVeiculo

3. tbl_OrdensFrete (Chave: CodFrete [PK])
   - CodFrete (PK), Data, ID_Cliente (FK), PlacaVeiculo (FK), ValorFrete

⚙️ Módulo 2: Relacionamentos, Integridade & Pesquisa (Cap. 05 a 08)

Capítulo 05 - Estabelecendo Integridade Referencial 1:N

  • Enunciado: Na Janela de Relações do Access, conecte a tabela tbl_Clientes à tabela tbl_OrdensFrete através do campo ID_Cliente. Ative a opção “Exigir Integridade Referencial”. Descreva o que acontece se o operador tentar gravar uma ordem informando um ID_Cliente = 9999 inexistente.
  • Gabarito:
1
2
3
4
5
6
7
Configuração:
- Tabela Principal: tbl_Clientes (Campo: ID_Cliente [PK])
- Tabela Relacionada: tbl_OrdensFrete (Campo: ID_Cliente [FK])
- Checkbox marcado: [X] Exigir Integridade Referencial

Comportamento do SGBD:
O Access emitirá o erro: "Não é possível adicionar ou alterar o registro porque é necessário um registro relacionado na tabela 'tbl_Clientes'". O registro não é gravado, blindando a integridade dos dados.

Capítulo 06 - Proteção contra Exclusão Acidental de Veículos da Frota

  • Enunciado: Na relação entre tbl_Veiculos e tbl_OrdensFrete, justifique tecnicamente por que a opção “Propagar Exclusão dos Registros Relacionados” (Exclusão em Cascata) DEVE permanecer DESMARCADA em um ambiente de auditoria e conformidade fiscal.
  • Gabarito:
1
2
Justificativa Técnica:
Se 'Propagar Exclusão' estivesse ativada, a simples exclusão de uma placa de caminhão vendida ou sucateada apagaria instantaneamente todo o histórico de fretes faturados e conhecimentos de transporte (CT-e) associados àquele veículo ao longo dos anos. Isso violaria as exigências do Fisco (SEFAZ), da auditoria contábil e da LGPD. A exclusão deve ser bloqueada, exigindo que o veículo seja apenas inativado (ex: campo 'Ativo = Não').

Capítulo 07 - Modelagem de Tabela Associativa N:M para Itens de Carga

  • Enunciado: Construa a tabela associativa tbl_ItensCarga para suportar a relação N:M entre tbl_OrdensFrete e tbl_Mercadorias. Defina a chave primária composta por dois campos e adicione os atributos do fato: Quantidade_Volumes e Valor_Declarado.
  • Gabarito:
1
2
3
4
5
6
7
8
9
CREATE TABLE tbl_ItensCarga (
    ID_OrdemFrete LONG,
    ID_Mercadoria LONG,
    Quantidade_Volumes INTEGER NOT NULL,
    Valor_Declarado CURRENCY NOT NULL,
    CONSTRAINT PK_ItensCarga PRIMARY KEY (ID_OrdemFrete, ID_Mercadoria),
    CONSTRAINT FK_Ordem FOREIGN KEY (ID_OrdemFrete) REFERENCES tbl_OrdensFrete (ID_OrdemFrete),
    CONSTRAINT FK_Mercadoria FOREIGN KEY (ID_Mercadoria) REFERENCES tbl_Mercadorias (ID_Mercadoria)
);

Capítulo 08 - Otimização com Índice Único para Chave de Acesso NF-e

  • Enunciado: Configure o campo Chave_NFe (Texto Curto, 44 dígitos) na tabela tbl_DocumentosFiscais com um Índice Único (Duplicação Não Autorizada). Explique o benefício de busca quando a transportadora acumular mais de 100.000 entregas.
  • Gabarito:
1
2
3
4
5
6
7
Propriedades de 'Chave_NFe':
- Tamanho: 44
- Requerido: Sim
- Indexado: Sim (Duplicação Não Autorizada)

Benefício de Desempenho:
Sem índice, o Access realiza uma 'Varredura Completa de Tabela' (Table Scan), inspecionando registro por registro até o final. Com a árvore B-Tree do índice ativo, a busca por uma chave NF-e específica é executada em complexidade logarítmica O(log N), retornando o registro em milissegundos sem sobrecarregar a memória do computador.

🔍 Módulo 3: Linguagem SQL Corporativa (Cap. 09 a 12)

Capítulo 09 - Consulta SQL Canônica de Cargas Valiosas

  • Enunciado: Escreva uma consulta SQL para listar o número da ordem (ID_OrdemFrete), data da emissão (Data_Emissao) e o valor do frete (Valor_Frete) da tabela tbl_OrdensFrete, apenas para transportes com valor superior a R$ 25.000,00 e status igual a 'Em Trânsito'.
  • Gabarito:
1
2
3
SELECT ID_OrdemFrete, Data_Emissao, Valor_Frete
FROM tbl_OrdensFrete
WHERE Valor_Frete > 25000 AND Status_Carga = 'Em Trânsito';

Capítulo 10 - Consulta SQL com Filtros BETWEEN, LIKE e Ordenação

  • Enunciado: Escreva uma consulta SQL que exiba o nome do cliente (Nome_Cliente), cidade (Cidade) e valor da carga (Valor_Carga). Filtre clientes cujo nome inicie com a letra 'S' ou 'A', com valor de carga entre R$ 10.000,00 e R$ 50.000,00, ordenando o resultado pelo valor de carga em ordem decrescente.
  • Gabarito:
1
2
3
4
5
SELECT Nome_Cliente, Cidade, Valor_Carga
FROM tbl_OrdensFrete
WHERE (Nome_Cliente LIKE 'S*' OR Nome_Cliente LIKE 'A*')
  AND Valor_Carga BETWEEN 10000 AND 50000
ORDER BY Valor_Carga DESC;

Capítulo 11 - Relatório SQL Unificado com INNER JOIN Multi-Tabelas

  • Enunciado: Construa uma consulta SQL cruzando tbl_OrdensFrete, tbl_Clientes e tbl_Motoristas. Exiba o ID_OrdemFrete, o Nome_Cliente, o Nome_Motorista e o Valor_Frete.
  • Gabarito:
1
2
3
4
5
6
7
8
SELECT 
    tbl_OrdensFrete.ID_OrdemFrete,
    tbl_Clientes.Nome_Cliente,
    tbl_Motoristas.Nome_Motorista,
    tbl_OrdensFrete.Valor_Frete
FROM (tbl_OrdensFrete
INNER JOIN tbl_Clientes ON tbl_OrdensFrete.ID_Cliente = tbl_Clientes.ID_Cliente)
INNER JOIN tbl_Motoristas ON tbl_OrdensFrete.ID_Motorista = tbl_Motoristas.ID_Motorista;

Capítulo 12 - Indicadores de Faturamento por Filial com GROUP BY e HAVING

  • Enunciado: Crie uma consulta SQL agrupada por UF_Destino que conte a quantidade de fretes emitidos (Qtd_Viagens), calcule o somatório total faturado (Faturamento_Total) e o frete médio (Ticket_Medio). Mostre apenas os estados que acumularam faturamento superior a R$ 100.000,00.
  • Gabarito:
1
2
3
4
5
6
7
8
9
SELECT 
    UF_Destino,
    COUNT(ID_OrdemFrete) AS Qtd_Viagens,
    SUM(Valor_Frete) AS Faturamento_Total,
    AVG(Valor_Frete) AS Ticket_Medio
FROM tbl_OrdensFrete
GROUP BY UF_Destino
HAVING SUM(Valor_Frete) > 100000
ORDER BY SUM(Valor_Frete) DESC;

🖥️ Módulo 4: Formulários & Relatórios Gerenciais (Cap. 13 a 16)

Capítulo 13 - Formulário de Cadastro com Validação Visual e Navegação

  • Enunciado: No formulário frm_CadastroClientes, adicione botões de comando da categoria Operações de Registro: “Salvar Registro”, “Adicionar Novo Registro” e “Excluir Registro”. Configure a propriedade “Separadores de Registro” como ‘Não’ e “Barras de Rolagem” como ‘Somente Vertical’.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Propriedades de frm_CadastroClientes:
- Modo Padrão: Formulário Simples
- Permitir Adições: Sim
- Permitir Exclusões: Sim
- Separadores de Registro: Não
- Barras de Rolagem: Somente Vertical
Botões de Ação inseridos no rodapé do formulário:
- btn_Novo: Categoria Operações de Registro -> Adicionar Novo Registro
- btn_Salvar: Categoria Operações de Registro -> Salvar Registro
- btn_Excluir: Categoria Operações de Registro -> Excluir Registro

Capítulo 14 - Subformulário Mestre-Detalhes com Totalizador Dinâmico

  • Enunciado: Na tela de faturamento de fretes, vincule o subformulário sub_ItensCarga ao formulário mestre frm_OrdemFrete usando os campos ID_OrdemFrete. Adicione uma caixa de texto no rodapé do subformulário calculando o total dos itens (=Soma([ValorTotal])) e faça o formulário mestre referenciá-la na caixa txt_TotalGeral.
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Configuração do Controle Subformulário:
- Objeto de Origem: sub_ItensCarga
- Vincular Campos Mestres (LinkMasterFields): ID_OrdemFrete
- Vincular Campos Filhos (LinkChildFields): ID_OrdemFrete

Fórmulas de Recálculo:
1. No Rodapé do sub_ItensCarga:
   - Nome: txt_SubtotalItens | Origem do Controle: =Soma([ValorTotal])
2. No Formulário Mestre frm_OrdemFrete:
   - Nome: txt_TotalGeral | Origem do Controle: =[sub_ItensCarga].[Form]![txt_SubtotalItens]

Capítulo 15 - Caixa de Combinação Relacional com Chave Oculta

  • Enunciado: Configure uma ComboBox chamada cbo_Veiculo no formulário de expedição para selecionar veículos. A caixa deve exibir o modelo e a placa para o operador, mas deve gravar internamente o campo numérico ID_Veiculo.
  • Gabarito:
1
2
3
4
5
6
7
Propriedades de cbo_Veiculo:
- Tipo de Origem da Linha: Tabela/Consulta
- Origem da Linha (SQL): SELECT ID_Veiculo, Placa, Modelo FROM tbl_Veiculos ORDER BY Placa;
- Coluna Acoplada (Bound Column): 1
- Número de Colunas: 3
- Largura das Colunas: 0cm; 3cm; 4cm
- Cabeçalhos de Coluna: Sim

Capítulo 16 - Relatório Agrupado por Região com Quebra Automática

  • Enunciado: Construa o relatório rpt_FretesPorRegiao agrupando os registros pelo campo Regiao_Entrega. Configure a seção “Cabeçalho do Grupo Regiao_Entrega” para exibir o nome da região e a seção “Rodapé do Grupo” para exibir a quantidade de fretes daquela região (=Contar([ID_OrdemFrete])) e a receita parcial (=Soma([Valor_Frete])).
  • Gabarito:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Estrutura do Relatório rpt_FretesPorRegiao:
1. Cabeçalho do Grupo (Regiao_Entrega):
   - Rótulo e Campo: [Regiao_Entrega] (Fonte: Segoe UI, Negrito, 14pt)
2. Seção Detalhe:
   - [ID_OrdemFrete], [Data_Emissao], [Nome_Cliente], [Valor_Frete]
3. Rodapé do Grupo (Regiao_Entrega):
   - Caixa 1: ="Total de Fretes na Região: " & Contar([ID_OrdemFrete])
   - Caixa 2: =Soma([Valor_Frete]) (Formato: Moeda)
4. Rodapé do Relatório (Geral da Empresa):
   - Caixa Geral: =Soma([Valor_Frete]) (Borda dupla superior, Negrito, 12pt)

🚀 Módulo 5: Operações Avançadas & Projeto Integrador (Cap. 17 a 20)

Capítulo 17 - Consulta de Ação UPDATE para Reajuste Tarifário

  • Enunciado: Escreva uma consulta de ação SQL para aplicar um reajuste de combustível de 5% sobre o valor do frete (Valor_Frete = Valor_Frete * 1.05) apenas para transportes com destino à região 'Nordeste' que ainda estejam com status 'Agendado'.
  • Gabarito:
1
2
3
UPDATE tbl_OrdensFrete
SET Valor_Frete = ROUND(Valor_Frete * 1.05, 2)
WHERE Regiao_Destino = 'Nordeste' AND Status_Carga = 'Agendado';

Capítulo 18 - Rotina de Fechamento com INSERT INTO e Expurgamento

  • Enunciado: Escreva os dois comandos SQL necessários para o fechamento contábil: primeiro copie todos os fretes com status 'Entregue' emitidos há mais de 180 dias para a tabela tbl_HistoricoFretes; em seguida, remova esses registros da tabela operacional tbl_OrdensFrete.
  • Gabarito:
1
2
3
4
5
6
7
8
9
-- 1. Copiar para o arquivo histórico:
INSERT INTO tbl_HistoricoFretes (ID_OrdemFrete, Data_Emissao, ID_Cliente, Valor_Frete, Status_Carga)
SELECT ID_OrdemFrete, Data_Emissao, ID_Cliente, Valor_Frete, Status_Carga
FROM tbl_OrdensFrete
WHERE Status_Carga = 'Entregue' AND Data_Emissao < (Date() - 180);

-- 2. Limpar a fila operacional:
DELETE FROM tbl_OrdensFrete
WHERE Status_Carga = 'Entregue' AND Data_Emissao < (Date() - 180);

Capítulo 19 - Conexão e Gerenciamento de Tabelas Vinculadas

  • Enunciado: Descreva o procedimento passo a passo para utilizar o “Gerenciador de Tabelas Vinculadas” (Linked Table Manager) do Access caso o arquivo de banco de dados Back-End (FastLog_Dados_be.accdb) seja transferido do diretório C:\FastLog\Dados para o servidor de rede \\servidor_matriz\bancos.
  • Gabarito:
1
2
3
4
5
6
7
8
Passo a Passo de Relinkagem:
1. Abra o arquivo Front-End (FastLog_FrontEnd.accdb).
2. Acesse a guia 'Dados Externos' na faixa de opções do Access.
3. No grupo 'Importar e Vincular', clique no botão 'Gerenciador de Tabelas Vinculadas'.
4. Marque a caixa de seleção para selecionar todas as tabelas vinculadas (tbl_Clientes, tbl_Veiculos, tbl_OrdensFrete).
5. Clique no botão 'Relinkar' ou 'Editar'.
6. Na janela do navegador de arquivos, aponte para o novo caminho de rede: '\\servidor_matriz\bancos\FastLog_Dados_be.accdb'.
7. Clique em 'Abrir' e aguarde a confirmação de que todas as conexões foram atualizadas com sucesso.

Capítulo 20 - Checklist de Homologação do SIG FastLog Dados Enterprise

  • Enunciado: Elabore um checklist de 5 itens de auditoria para homologar o banco de dados final antes de entregá-lo para a operação e para a integração com os scripts de automação em VBA.
  • Gabarito:
1
2
3
4
5
6
Checklist de Homologação do Banco de Dados:
[X] 1. Integridade Referencial: Nenhuma ordem de frete órfã existe e todas as relações 1:N possuem regras ativas.
[X] 2. Normalização 3FN: Todos os campos dependem exclusivamente da chave primária das tabelas respectivas.
[X] 3. Desempenho de Consultas: Todas as consultas SQL essenciais executam em menos de 1 segundo com índices ativos.
[X] 4. Usabilidade dos Formulários: Ordem de tabulação lógica, máscaras de CNPJ/Placa funcionando e ComboBoxes com chave oculta.
[X] 5. Manutenção Preventiva: Executada a ferramenta 'Compactar e Reparar Banco de Dados' com redução do tamanho do arquivo (.accdb).