Questão de Banco de Dados — Álgebra relacional — CESPE / CEBRASPE 2026
Banco de Dados›Álgebra relacional
Código
ce227875
Banca
CESPE / CEBRASPE
Órgão
SEFAZ-PR
Ano
2026
Nível
Médio
Cargo
Agente Fazendário Estadual - Função: Profissional de Tecnologia da Informação
Determinada secretaria de fazenda adota um sistema de controle e arrecadação que tem as seguintes relações:Um agente fazendário de TI da referida secretaria deseja obter, em álgebra relacional, o nome e o valor devido de todos os contribuintes que possuem lançamentos fiscais referentes ao tributo denominado ICMS. Para tal fim, serão utilizadas as operações de seleção (σ), projeção (π) e junção (⋈). Sabe-se que a aplicação precoce de seleções é uma forma de otimização da consulta.A partir das informações da situação precedente e considerando que a ordem de execução das operações está indicada explicitamente pelos parênteses, assinale a opção que representa corretamente a expressão, em álgebra relacional, cujo resultado será o desejado pelo agente fazendário.
A
B
C
D
E
Revelar gabarito e comentário▾
GabaritoE — [imagem]
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Álgebra relacional: seleção, projeção e junção
Gabarito: letra E. A expressão correta aplica primeiro a seleção sobre a relação de lançamentos fiscais para filtrar apenas os registros do tributo ICMS, depois realiza a junção com a relação de contribuintes e, por fim, projeta o nome e o valor devido — exatamente a ordem que otimiza a consulta, conforme o enunciado. A chave da questão está em reconhecer que a seleção deve ser aplicada antes da junção, reduzindo o número de tuplas a serem combinadas.
A álgebra relacional é uma linguagem formal de consulta composta por operações que recebem uma ou mais relações (tabelas) como entrada e produzem uma nova relação como saída. As três operações utilizadas nesta questão têm papéis bem definidos: a seleção (σ) filtra linhas que satisfazem um predicado, a projeção (π) seleciona colunas específicas eliminando duplicatas, e a junção (⋈) combina pares de linhas de duas relações com base em uma condição de correspondência entre atributos. O enunciado menciona explicitamente que a aplicação precoce de seleções é uma forma de otimização — isso significa que, para obter o resultado desejado de forma eficiente, devemos filtrar as tuplas de ICMS antes de realizar a junção com a tabela de contribuintes.
Imagine que a tabela de lançamentos fiscais tenha milhares de registros de diversos tributos (ICMS, IPTU, ISS etc.) e a tabela de contribuintes tenha centenas de registros. Se fizéssemos a junção primeiro, combinaríamos todos os lançamentos com todos os contribuintes e só depois filtraríamos os de ICMS — um desperdício computacional enorme. Aplicando a seleção primeiro, reduzimos drasticamente o número de tuplas que participam da junção, tornando a consulta muito mais rápida. Essa é a essência da otimização por "empurrar" seleções para baixo na árvore de execução.
A ordem correta das operações, portanto, é: (1) selecionar os lançamentos com tributo = 'ICMS'; (2) juntar o resultado com a tabela de contribuintes pela chave de ligação (provavelmente o CPF ou código do contribuinte); (3) projetar as colunas nome e valor devido. Qualquer expressão que inverta essa ordem — fazendo a junção antes da seleção — produz o mesmo resultado lógico, mas sem a otimização mencionada, e é exatamente isso que a banca explora nos distratores.
A pegadinha central desta questão é a ordem de execução das operações. O enunciado afirma que "a ordem de execução das operações está indicada explicitamente pelos parênteses", ou seja, a expressão correta deve refletir a sequência otimizada: seleção → junção → projeção. As alternativas incorretas provavelmente apresentam a junção antes da seleção, ou a projeção antes da junção, ou ainda a seleção aplicada sobre a relação errada. Guarde o critério: seleção antes da junção é a marca da otimização; projeção por último, pois precisamos de todas as colunas para a junção e só então descartamos as desnecessárias.
Alternativa A — ❌ Incorreta
Esta alternativa provavelmente aplica a projeção antes da junção, o que impediria a junção correta, pois os atributos necessários para a condição de junção (como a chave do contribuinte) já teriam sido descartados. A projeção deve ser a última operação, após a junção, para que todas as colunas necessárias estejam disponíveis durante a combinação das relações.
Alternativa B — ❌ Incorreta
Esta alternativa provavelmente realiza a junção antes da seleção, o que contraria a otimização mencionada no enunciado. Embora o resultado lógico possa ser o mesmo, a ordem não é a otimizada, e o enunciado deixa claro que a aplicação precoce de seleções é uma forma de otimização — portanto, a expressão correta deve refletir essa otimização.
Alternativa C — ❌ Incorreta
Esta alternativa provavelmente aplica a seleção sobre a relação de contribuintes em vez de sobre a relação de lançamentos fiscais. O filtro deve ser aplicado sobre os lançamentos, pois é lá que está o atributo do tributo (ICMS). Selecionar contribuintes não filtraria os lançamentos corretos.
Alternativa D — ❌ Incorreta
Esta alternativa provavelmente apresenta a projeção antes da seleção ou da junção, o que eliminaria colunas necessárias para as operações subsequentes. A projeção deve ser a última operação, após a junção, para que o resultado contenha apenas nome e valor devido.
Alternativa E — ✅ Correta ⟵ GABARITO
Esta alternativa apresenta a ordem otimizada: primeiro a seleção sobre os lançamentos fiscais (filtrando ICMS), depois a junção com os contribuintes, e por fim a projeção de nome e valor devido. Essa sequência reflete exatamente a otimização mencionada no enunciado — aplicar a seleção precocemente reduz o número de tuplas na junção, tornando a consulta mais eficiente.
PEGA ESSA DICA!
Em questões de álgebra relacional que mencionam otimização, a ordem das operações é o ponto decisivo. A regra de ouro é: seleção o mais cedo possível, projeção o mais tarde possível. A seleção reduz linhas (diminui o custo da junção), enquanto a projeção reduz colunas (e deve ser feita após a junção para não descartar atributos necessários à condição de junção).