Pular para o conteúdo principal

Questão de Banco de Dados — Álgebra relacional — FGV 2025

Banco de DadosÁlgebra relacional
Código
fg115315
Banca
FGV
Órgão
MPU
Ano
2025
Nível
Superior
Cargo
Analista do - Desenvolvimento de Sistemas
João é analista de banco de dados do MPU e precisa analisar as consultas que estão impactando o desempenho do banco de dados BDProc no PostgreSQL. Para isso, ele decidiu escrever as consultas SQL como expressões da álgebra relacional. Observe a consulta SQL a seguir.Imagem associada para resolução da questãoNa álgebra relacional, a expressão correspondente que João deve escrever é:
  1. AImagem associada para resolução da questão
  2. BImagem associada para resolução da questão
  3. CImagem associada para resolução da questão
  4. DImagem associada para resolução da questão
  5. EImagem associada para resolução da questão
Revelar gabarito e comentário

GabaritoB — [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: Tradução de Consultas SQL

Gabarito: letra B. A consulta SQL apresentada combina uma seleção (filtro de linhas com WHERE), uma projeção (escolha de colunas com SELECT) e uma junção (combinação de tabelas com JOIN). A expressão correta em álgebra relacional deve refletir essa ordem de operações, aplicando a seleção e a projeção sobre o resultado da junção, o que corresponde à alternativa B.

A álgebra relacional é uma linguagem formal de consulta que opera sobre relações (tabelas), recebendo uma ou duas relações como entrada e retornando uma nova relação como saída. Ela é a base teórica do modelo relacional e, embora o SQL seja a linguagem prática dos SGBDs, as operações da álgebra relacional são os fundamentos conceituais que explicam como as consultas funcionam internamente. As operações principais são: seleção (σ), que filtra tuplas (linhas) que satisfazem um predicado; projeção (π), que seleciona atributos (colunas) específicos e elimina duplicatas; junção (⋈), que combina tuplas de duas relações com base em uma condição de correspondência; além de operações de conjunto como união, interseção e diferença.

A tradução de uma consulta SQL para álgebra relacional exige identificar cada cláusula e mapeá-la para o operador correspondente. A cláusula SELECT com lista de colunas corresponde à projeção (π). A cláusula FROM com múltiplas tabelas indica uma junção (⋈) ou produto cartesiano. A cláusula WHERE com condições de filtro corresponde à seleção (σ). A ordem de aplicação dos operadores é crucial: primeiro combinamos as tabelas (junção), depois filtramos as linhas (seleção) e, por fim, projetamos as colunas desejadas (projeção). Essa sequência garante que o resultado final contenha apenas as tuplas e atributos relevantes para a consulta.

Um exemplo prático: considere a consulta SELECT nome, salario FROM empregado WHERE departamento = 'TI'. A tradução correta seria π(nome, salario)(σ(departamento = 'TI')(empregado)). Primeiro, a seleção filtra as linhas do departamento de TI; depois, a projeção escolhe apenas as colunas nome e salario. Se a ordem fosse invertida, a projeção removeria a coluna departamento antes do filtro, impossibilitando a seleção. Esse princípio se estende a consultas com junções: a junção deve ser aplicada antes da seleção e da projeção para que os filtros e projeções operem sobre o conjunto completo de dados combinados.

A pegadinha que a banca explora nesta questão é a ordem de aplicação dos operadores. O candidato pode ser tentado a aplicar a projeção antes da junção, o que removeria colunas necessárias para a condição de junção, ou a aplicar a seleção antes da junção, o que filtraria linhas de uma tabela individual antes da combinação, alterando o resultado. A alternativa correta respeita a precedência lógica: primeiro a junção, depois a seleção e, por fim, a projeção. Essa é a distinção fundamental que separa a alternativa B das demais.

  1. 1FROM (tabelas) → Junção (⋈)
  2. 2WHERE (filtro) → Seleção (σ)
  3. 3SELECT (colunas) → Projeção (π)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Esta alternativa provavelmente aplica a projeção antes da junção ou da seleção. Se a projeção é aplicada primeiro, ela remove colunas que podem ser necessárias para a condição de junção ou para o filtro da seleção, resultando em uma expressão que não corresponde à consulta SQL original. A ordem correta exige que a junção seja feita antes da projeção.

Alternativa B — ✅ Correta ⟵ GABARITO

Esta alternativa apresenta a sequência correta: primeiro a junção (⋈) das tabelas, depois a seleção (σ) com o predicado do WHERE e, por fim, a projeção (π) com as colunas do SELECT. Essa ordem garante que o resultado final contenha exatamente as tuplas e atributos especificados na consulta SQL, sem perda de informações necessárias para os filtros.

Alternativa C — ❌ Incorreta

Esta alternativa provavelmente aplica a seleção antes da junção. Se a seleção é aplicada a uma tabela individual antes da junção, ela filtra linhas com base em condições que podem envolver colunas de outra tabela, o que não é possível. A condição de seleção deve ser aplicada após a junção, quando todas as colunas das tabelas combinadas estão disponíveis.

Alternativa D — ❌ Incorreta

Esta alternativa provavelmente omite a projeção ou a seleção, ou aplica os operadores em uma ordem incorreta. Se a projeção é omitida, o resultado incluiria todas as colunas das tabelas, não apenas as especificadas no SELECT. Se a seleção é omitida, o resultado incluiria todas as linhas, não apenas as que satisfazem a condição do WHERE.

Alternativa E — ❌ Incorreta

Esta alternativa provavelmente aplica a projeção antes da seleção. Se a projeção remove a coluna usada na condição de seleção, a seleção não pode ser aplicada corretamente. A ordem correta é seleção antes da projeção, pois a seleção precisa de todas as colunas para avaliar o predicado.

NÃO CAIA NESSA!

A banca explora a ordem de aplicação dos operadores da álgebra relacional. O candidato pode ser tentado a aplicar a projeção antes da junção ou da seleção, o que removeria colunas necessárias para os filtros. Lembre-se: a junção vem primeiro, depois a seleção e, por fim, a projeção. Essa sequência é a chave para traduzir corretamente consultas SQL com JOIN, WHERE e SELECT.

PEGA ESSA DICA!

Para traduzir SQL para álgebra relacional, identifique cada cláusula: FROM com múltiplas tabelas → junção (⋈); WHERE → seleção (σ); SELECT com lista de colunas → projeção (π). Aplique os operadores na ordem: junção → seleção → projeção. Essa sequência garante que o resultado final contenha apenas as tuplas e atributos desejados.

Gabarito: letra B

Link permanente: /questoes/fg115315