Pular para o conteúdo principal

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

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

Considere a seguinte tabela de um banco de dados relacional:

 

Motor (ID, Potência, Fabricante)

 

O comando da álgebra relacional que proporciona a exibição da potência e do fabricante, para veículos do fabricante Clips e com potência maior do que 20 unidades é:

  1. A\sigmaPotência > 23 ∧ Fabricante=“Clips” (Motor))
  2. B\sigmaMotor.Potência>20, Motor.Fabricante=”Clips”
  3. C\piMotor.Potência>20, Motor.Fabricante=”Clips”
  4. D\piPotência, Fabricante (\sigmaPotência>20 ∧ Fabricante=“Clips” (Motor))
  5. E\piPotência, Fabricante (Motor.Potência>20 ∧ Motor.Fabricante=“Clips”)
Revelar gabarito e comentário

GabaritoD — \piPotência, Fabricante (\sigmaPotência>20 ∧ Fabricante=“Clips” (Motor))

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 pede duas coisas distintas: filtrar as linhas que atendem às condições (fabricante "Clips" e potência > 20) e, em seguida, exibir apenas as colunas Potência e Fabricante. Na álgebra relacional, isso se traduz em uma seleção (σ) seguida de uma projeção (π), exatamente como na alternativa D: πPotência, Fabricante (σPotência>20 ∧ Fabricante="Clips" (Motor)). As demais alternativas ou usam os operadores na ordem errada, ou misturam a sintaxe, ou aplicam a condição no operador errado.

A álgebra relacional é uma linguagem formal de consulta baseada na teoria de conjuntos, proposta por Edgar Codd em 1970. Ela define um conjunto de operações que recebem uma ou mais relações (tabelas) como entrada e produzem uma nova relação como saída — propriedade conhecida como fechamento. As duas operações centrais desta questão são:

  • Seleção (σ): filtra linhas (tuplas) que satisfazem um predicado. É uma operação unária que reduz o número de tuplas, mantendo todas as colunas. Ex.: σPotência>20 (Motor) retorna todas as colunas das linhas cuja potência é maior que 20.

  • Projeção (π): filtra colunas (atributos), eliminando as demais e removendo tuplas duplicadas. É uma operação unária que reduz o número de atributos. Ex.: πPotência, Fabricante (Motor) retorna apenas as colunas Potência e Fabricante, sem repetições.

A ordem das operações é crucial. Primeiro, aplica-se a seleção para restringir as linhas; depois, a projeção para escolher as colunas. Se a projeção fosse aplicada antes, as condições da seleção poderiam referenciar colunas que já não existem no resultado intermediário. No caso, como as condições usam exatamente as colunas que serão projetadas, a ordem não alteraria o resultado final, mas a forma canônica e mais segura é selecionar primeiro e projetar depois.

Um exemplo concreto: suponha a tabela Motor com as linhas (ID=1, Potência=25, Fabricante="Clips"), (ID=2, Potência=15, Fabricante="Clips") e (ID=3, Potência=30, Fabricante="Outro"). A seleção σPotência>20 ∧ Fabricante="Clips" retorna apenas a linha 1. A projeção πPotência, Fabricante sobre esse resultado devolve a linha (25, "Clips"). Se aplicássemos a projeção primeiro, obteríamos as colunas Potência e Fabricante de todas as linhas e, depois, a seleção filtraria as linhas — o resultado seria o mesmo, mas a ordem canônica evita problemas quando a condição usa colunas que não serão projetadas.

A pegadinha desta questão está na sintaxe e na aplicação correta dos operadores. As alternativas B, C e E misturam a condição dentro do operador de projeção ou usam a seleção sem a sintaxe adequada. A alternativa A usa apenas a seleção, sem a projeção, e ainda traz um valor de potência diferente (23 em vez de 20). A alternativa D é a única que combina corretamente os dois operadores, na ordem certa e com a sintaxe adequada.

Guarde a distinção: seleção filtra linhas, projeção filtra colunas. É exatamente essa fronteira que separa as alternativas corretas das incorretas.

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

Alternativa A — ❌ Incorreta

A alternativa A usa apenas a seleção (σ), sem a projeção (π). Isso significa que o resultado conteria todas as colunas da tabela Motor (ID, Potência, Fabricante), não apenas Potência e Fabricante como pede o enunciado. Além disso, o valor de potência está errado: a condição é Potência > 23, mas o enunciado pede Potência > 20. Há também um parêntese extra no final, indicando erro de sintaxe.

Alternativa B — ❌ Incorreta

A alternativa B usa o símbolo de seleção (σ) mas com uma sintaxe inválida: σMotor.Potência>20, Motor.Fabricante="Clips". Na álgebra relacional, a seleção recebe um predicado (condição) entre parênteses, não uma lista de condições separadas por vírgula. Além disso, não há projeção, então o resultado incluiria todas as colunas. A forma correta seria σPotência>20 ∧ Fabricante="Clips" (Motor).

Alternativa C — ❌ Incorreta

A alternativa C usa o símbolo de projeção (π) mas com uma sintaxe inválida: πMotor.Potência>20, Motor.Fabricante="Clips". A projeção recebe uma lista de atributos entre parênteses, não condições. Aqui, a condição foi colocada dentro da projeção, o que não faz sentido — a projeção apenas escolhe colunas, não filtra linhas. A condição deveria estar na seleção, aplicada antes.

Alternativa D — ✅ Correta ⟵ GABARITO

A alternativa D é a única que aplica corretamente os dois operadores na ordem certa: primeiro a seleção σPotência>20 ∧ Fabricante="Clips" para filtrar as linhas que atendem às condições, e depois a projeção πPotência, Fabricante para exibir apenas as colunas desejadas. A sintaxe está correta: a seleção recebe o predicado entre parênteses e a relação como argumento; a projeção recebe a lista de atributos e a relação resultante da seleção. O resultado é exatamente o que o enunciado pede: potência e fabricante dos veículos do fabricante Clips com potência maior que 20.

Alternativa E — ❌ Incorreta

A alternativa E usa o símbolo de projeção (π) mas com uma sintaxe inválida: πPotência, Fabricante (Motor.Potência>20 ∧ Motor.Fabricante="Clips"). A projeção recebe apenas a lista de atributos e a relação, não uma condição. A condição Motor.Potência>20 ∧ Motor.Fabricante="Clips" deveria estar em uma seleção, aplicada antes da projeção. A forma correta seria πPotência, Fabricante (σPotência>20 ∧ Fabricante="Clips" (Motor)).

Gabarito: letra D.

Link permanente: /questoes/vu195610