Pular para o conteúdo principal

Questão de Banco de Dados — Álgebra Relacional — VUNESP 2023

Banco de DadosÁlgebra Relacional
Código
vu195609
Banca
VUNESP
Órgão
TJ RS
Ano
2023
Cargo
ATI ( )

Considere a seguinte tabela de um banco de dados relacional:

 

Veículo (RENAVAM, Modelo, Marca, Ano)

 

O comando da álgebra relacional que proporciona a exibição do modelo e ano de veículos, com ano maior do que 2018 é:

  1. A\piModelo, Ano σ(Veıˊculo.Ano>2018)\sigma (Veículo.Ano>2018)
  2. B\piModelo, Ano σ\sigma(Veículo) (Ano>2018))
  3. C\piModelo and Ano>2018 (Veículo))
  4. D\piModelo, Ano (\sigmaAno > 2018 (Veículo))
  5. E\piModelo, Ano, Ano > 2018 (Veículo))
Revelar gabarito e comentário

GabaritoD — \piModelo, Ano (\sigmaAno > 2018 (Veículo))

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 e Projeção

Gabarito: letra D. A consulta que exibe apenas os atributos Modelo e Ano dos veículos com Ano maior que 2018 é πModelo, Ano (σAno > 2018 (Veículo)), pois a seleção (σ) filtra as linhas (tuplas) que satisfazem a condição e a projeção (π) seleciona as colunas (atributos) desejadas — exatamente a ordem e a sintaxe da alternativa D.

A álgebra relacional é uma linguagem formal de consulta baseada em operações sobre relações (tabelas). Cada operação recebe uma ou mais relações como entrada e produz uma nova relação como saída — propriedade conhecida como fechamento. As duas operações fundamentais para esta questão são:

  • Seleção (σ): filtra linhas (tuplas) que satisfazem um predicado. Ex.: σAno > 2018 (Veículo) retorna todas as tuplas cujo atributo Ano seja maior que 2018.

  • Projeção (π): filtra colunas (atributos), eliminando tuplas duplicadas. Ex.: πModelo, Ano (Veículo) retorna apenas as colunas Modelo e Ano.

A ordem correta das operações é crucial: primeiro aplica-se a seleção para restringir as linhas e, em seguida, a projeção para escolher as colunas. Isso porque, se a projeção fosse aplicada antes, o atributo Ano (necessário para a condição) poderia ser descartado, impossibilitando a seleção. A sintaxe canônica é πatributos (σcondição (Relação)).

Exemplo prático: Considere a tabela Veículo com as tuplas (RENAVAM=1, Modelo='Gol', Marca='VW', Ano=2019) e (RENAVAM=2, Modelo='Civic', Marca='Honda', Ano=2017). Aplicando σAno > 2018 (Veículo), obtemos apenas a primeira tupla. Em seguida, πModelo, Ano sobre esse resultado retorna a linha ('Gol', 2019).

A pegadinha da banca está na sintaxe e na ordem das operações. Muitas alternativas misturam os operadores ou colocam a condição no lugar errado, como se a projeção pudesse conter um predicado ou a seleção fosse aplicada após a projeção sem o atributo necessário. A alternativa correta é a única que segue a notação padrão: projeção externa, seleção interna com a condição sobre o atributo Ano.

Guarde a distinção: seleção = linhas (tuplas), projeção = colunas (atributos). É nessa fronteira que as alternativas se dividem.

  1. 1Seleção (σ) filtra linhas
  2. 2Projeção (π) escolhe colunas
  3. 3Resultado final
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

A expressão πModelo, Ano (σ (Veículo.Ano>2018)) está incorreta porque a condição da seleção está escrita de forma incompleta: σ (Veículo.Ano>2018) não especifica o operador relacional (como >) de forma adequada — falta o nome do atributo antes do operador, e a sintaxe Veículo.Ano>2018 dentro dos parênteses da seleção não é a forma canônica. A forma correta seria σAno > 2018 (Veículo). Além disso, a notação com o nome da tabela prefixado (Veículo.Ano) não é usada na álgebra relacional pura; usa-se apenas o nome do atributo.

Alternativa B — ❌ Incorreta

A expressão πModelo, Ano σ(Veículo) (Ano>2018)) está incorreta por dois motivos: (1) a seleção σ(Veículo) não possui condição — o predicado Ano>2018 está fora dos parênteses da seleção, o que é sintaticamente inválido; (2) a ordem está invertida: a projeção é aplicada antes da seleção, o que descartaria o atributo Ano antes de poder filtrar por ele. A forma correta exige a seleção primeiro, com a condição dentro dos parênteses.

Alternativa C — ❌ Incorreta

A expressão πModelo and Ano>2018 (Veículo)) está incorreta porque mistura a sintaxe da álgebra relacional com a da SQL: o uso de and dentro da projeção não é válido — a projeção deve listar apenas os atributos separados por vírgula, e a condição deve estar na seleção. Além disso, a condição Ano>2018 está dentro da projeção, o que não faz sentido, pois a projeção não filtra linhas.

Alternativa D — ✅ Correta ⟵ GABARITO

A expressão πModelo, Ano (σAno > 2018 (Veículo)) está correta porque segue exatamente a sintaxe da álgebra relacional: primeiro a seleção σAno > 2018 (Veículo) filtra as tuplas com Ano maior que 2018, e depois a projeção πModelo, Ano seleciona apenas os atributos Modelo e Ano. A ordem é a correta: seleção (linhas) antes da projeção (colunas), garantindo que o atributo Ano esteja disponível para a condição.

Alternativa E — ❌ Incorreta

A expressão πModelo, Ano, Ano > 2018 (Veículo)) está incorreta porque inclui a condição Ano > 2018 como se fosse um atributo na projeção. A projeção deve listar apenas nomes de atributos; a condição de filtro deve estar na seleção. Além disso, não há operador de seleção na expressão, então nenhuma linha seria filtrada.

Gabarito: letra D — a única que aplica corretamente a seleção (σ) para filtrar linhas e a projeção (π) para escolher colunas, na ordem e com a sintaxe adequadas.

Link permanente: /questoes/vu195609