Questão de Banco de Dados — Álgebra Relacional — FGV 2023
Banco de Dados›Álgebra Relacional
Código
fg161116
Banca
FGV
Órgão
ALEMA
Ano
2023
Cargo
TecGes Admin ( )
As regras de transformação gerais para operações da álgebra relacional são amplamente utilizadas pelos SGBDs relacionais para otimizações de consultas SQL.
Considerando duas relações, R e S, analise as afirmativas a seguir:
I. σC (R θ S) ≡ (σC (R) θ (σC (S)).
II. πLista 1(π Lista 2(...(π Lista n (R))...)) ≡ π Lista 1 (R).
III. σC1 AND C2 AND... Cn (R) ≡ σC1( σC2(...( σ Cn (R))...)).
Está correto o que se afirma em
AI e II, apenas.
BI, apenas.
CII e III, apenas.
DI e III, apenas.
EI, II e III.
Revelar gabarito e comentário▾
GabaritoE — I, II e III.
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: Regras de Transformação e Otimização de Consultas
Gabarito: letra E. As três afirmativas estão corretas: a seleção comuta com o produto cartesiano (I), a projeção em cascata equivale à projeção final (II) e a seleção com conjunção de condições pode ser decomposta em seleções sucessivas (III). Essas são regras clássicas de equivalência usadas pelos otimizadores de consulta dos SGBDs relacionais.
A álgebra relacional é uma linguagem formal de consulta composta por operações que recebem uma ou duas relações (tabelas) como entrada e produzem uma nova relação como saída. Essa propriedade, chamada de fechamento, é o que permite aninhar expressões e, consequentemente, aplicar as regras de transformação que a questão cobra. As operações básicas incluem seleção (σ), projeção (π), produto cartesiano (×), união (∪), diferença (−), renomeação (ρ), junção (⋈), interseção (∩) e divisão (÷).
As regras de equivalência são fundamentais para a otimização de consultas: o otimizador do SGBD reescreve a consulta em uma forma equivalente, porém mais eficiente, antes de executá-la. Por exemplo, aplicar a seleção o mais cedo possível reduz o número de tuplas processadas nas operações seguintes, diminuindo o custo de E/S e de processamento.
Vamos analisar cada afirmativa em detalhes.
Regras de Transformação — só Afirmativas Corretas: 3; só Afirmativas Incorretas: 0; Afirmativas Corretas∩Afirmativas Incorretas: 0
Item I — ✅ Correto
A afirmativa I afirma que σC (R θ S) ≡ (σC (R) θ (σC (S)), onde θ representa um operador binário como produto cartesiano (×), junção (⋈) ou união (∪). Essa equivalência é válida quando a condição C se refere apenas a atributos de R ou de S, e não a atributos de ambas as relações simultaneamente. Nesse caso, a seleção pode ser empurrada para dentro da operação binária, filtrando cada relação antes de combiná-las. Isso é uma das regras mais importantes de otimização, pois reduz drasticamente o tamanho das relações intermediárias.
Item II — ✅ Correto
A afirmativa II afirma que πLista1(πLista2(...(πListan(R))...)) ≡ πLista1(R). Isso é verdadeiro porque a projeção remove atributos, e aplicar várias projeções em sequência é equivalente a aplicar apenas a projeção final, desde que a lista de atributos da projeção mais externa (Lista1) seja um subconjunto das listas internas. Em outras palavras, projeções em cascata podem ser colapsadas em uma única projeção com a lista final de atributos desejados. Essa regra também é usada pelos otimizadores para simplificar expressões.
Item III — ✅ Correto
A afirmativa III afirma que σC1 AND C2 AND... Cn (R) ≡ σC1(σC2(...(σCn(R))...)). Isso é verdadeiro porque a seleção é uma operação que filtra tuplas com base em um predicado, e a conjunção de condições pode ser decomposta em seleções sucessivas, cada uma aplicando uma condição. A ordem das seleções não altera o resultado final, pois todas as condições são independentes. Essa regra permite que o otimizador escolha a ordem mais eficiente de aplicar as condições, por exemplo, aplicando primeiro as condições mais seletivas.
Conclusão: As três afirmativas estão corretas, portanto a alternativa correta é a letra E.