Pular para o conteúdo principal

Questão de Banco de Dados — Álgebra Relacional — FGV 2024

Banco de DadosÁlgebra Relacional
Código
fg165222
Banca
FGV
Órgão
ALEP
Ano
2024
Cargo
Ana Leg ( )

Em otimização de consultas expressas em álgebra relacional, é possível considerar, para alguns casos, a transformação de expressões, a fim de que produzam resultados equivalentes.

 

Sejam:

 

I. R e S relações de um banco de dados relacional.

 

II. L um subconjunto de atributos comuns às relações R e S.

 

III. L1 \subset L2 \subset L3 conjuntos de atributos de R.

 

No que se refere ao operador de PROJEÇÃO (π\pi), assinale a opção que apresenta uma propriedade de equivalência válida.

  1. AπL(RS)(πL(R))(πL(S))\pi_L (R \cap S) \equiv (\pi_L(R)) \cup (\pi_L(S))
  2. BπL(RS)(πL(R))(πL(S))\pi_L (R \cup S) \equiv (\pi_L(R)) \cup (\pi_L(S))
  3. CπL(R÷S)(πL(R))÷(πL(S))\pi_L (R \div S) \equiv (\pi_L(R)) \div (\pi_L(S))
  4. DπL(RS)(πL(SR))\pi_L (R - S) \equiv (\pi_L(S - R))
  5. EπL1(πL2(πL3(R)))πL3(R)\pi_{L1} (\pi_{L2}(\pi_{L3}(R))) \equiv \pi_{L3}(R)
Revelar gabarito e comentário

GabaritoB — \pi_L (R \cup S) \equiv (\pi_L(R)) \cup (\pi_L(S))

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: Propriedades de Equivalência da Projeção

Gabarito: letra B. A projeção é distributiva sobre a união: projetar os atributos comuns L sobre a união de R e S equivale a unir as projeções individuais. Essa é uma das poucas equivalências válidas envolvendo a projeção, pois a união preserva a estrutura de tuplas, enquanto interseção, diferença e divisão não se comportam bem com a projeção.

A álgebra relacional é uma linguagem formal de consulta baseada na teoria de conjuntos, onde operações como seleção (σ), projeção (π), união (∪), diferença (−), produto cartesiano (×), junção (⋈), interseção (∩) e divisão (÷) manipulam relações (tabelas). A projeção (π) é uma operação unária que seleciona um subconjunto de colunas (atributos) de uma relação, eliminando tuplas duplicadas no resultado. Quando falamos em otimização de consultas, buscamos reescrever expressões algébricas em formas equivalentes que possam ser executadas de maneira mais eficiente, e para isso precisamos conhecer quais transformações preservam o resultado.

A propriedade central que decide esta questão é a distributividade da projeção sobre os operadores de conjunto. A projeção é distributiva sobre a união, mas não é distributiva sobre a interseção, a diferença ou a divisão. Vamos entender o porquê de cada caso:

  • União (∪): A união combina tuplas de duas relações. Se projetarmos os atributos comuns L antes de unir, obtemos exatamente as mesmas tuplas que unir as projeções. Isso ocorre porque a união não depende de valores em atributos fora de L — uma tupla que está em R ou em S, ao ser projetada, continua na união das projeções. Formalmente, π_L(R ∪ S) ≡ π_L(R) ∪ π_L(S).

  • Interseção (∩): A interseção retém apenas tuplas que aparecem em ambas as relações. Se projetarmos antes de intersectar, podemos perder a informação necessária para determinar se uma tupla está em ambas. Por exemplo, se R tem a tupla (a, 1) e S tem a tupla (a, 2), e L = {A}, então π_L(R) = {a} e π_L(S) = {a}, logo π_L(R) ∩ π_L(S) = {a}. Mas R ∩ S = ∅ (pois as tuplas completas diferem), e π_L(R ∩ S) = ∅. Portanto, π_L(R ∩ S) ≠ π_L(R) ∩ π_L(S) em geral. Na verdade, a inclusão correta é π_L(R ∩ S) ⊆ π_L(R) ∩ π_L(S).

  • Diferença (−): A diferença retém tuplas da primeira relação que não estão na segunda. Projetar antes de subtrair pode fazer com que tuplas que eram diferentes em atributos fora de L se tornem iguais após a projeção, alterando o resultado. Por exemplo, R = {(a, 1)}, S = {(a, 2)}, L = {A}. Então π_L(R) = {a}, π_L(S) = {a}, e π_L(R) − π_L(S) = ∅. Mas R − S = {(a, 1)}, e π_L(R − S) = {a}. Portanto, π_L(R − S) ≠ π_L(R) − π_L(S).

  • Divisão (÷): A divisão é uma operação complexa que responde a perguntas com quantificador universal ("todos"). A projeção não é distributiva sobre a divisão, pois a divisão depende da estrutura completa das tuplas, e projetar antes pode remover atributos necessários para a correspondência.

Além disso, há uma propriedade de composição de projeções: se L1 ⊆ L2 ⊆ L3, então π_L1(π_L2(π_L3(R))) ≡ π_L1(R). Ou seja, projetar repetidamente sobre subconjuntos de atributos é equivalente a projetar diretamente sobre o menor conjunto. Isso ocorre porque a projeção é idempotente no sentido de que π_L1(π_L2(R)) = π_L1(R) quando L1 ⊆ L2.

A pegadinha desta questão está em confundir a distributividade da projeção sobre a união com a distributividade sobre outros operadores de conjunto. A banca explora a intuição de que "se funciona para união, deve funcionar para interseção", mas isso é falso. A alternativa A, por exemplo, troca a união pela interseção, e a alternativa C tenta aplicar a propriedade à divisão, que é um operador muito mais complexo.

Guarde a fronteira: projeção distribui sobre união, mas não sobre interseção, diferença ou divisão. É exatamente nessa distinção que as alternativas se dividem.

Projeção da UniãoUnião das Projeçõesπ_L(R∪S)π_L(R)∪π_L(S)EquivalentesLEVELsoulevel.com.br
Distributividade da Projeção sobre União — só Projeção da União: π_L(R∪S); só União das Projeções: π_L(R)∪π_L(S); Projeção da União∩União das Projeções: Equivalentes

Alternativa A — ❌ Incorreta

A alternativa afirma que π_L(R ∩ S) ≡ π_L(R) ∪ π_L(S). Há dois erros aqui. Primeiro, a projeção não é distributiva sobre a interseção, como demonstrado acima. Segundo, mesmo que fosse, a operação à direita deveria ser uma interseção (∩), não uma união (∪). A forma correta de distribuir a projeção sobre a interseção seria π_L(R ∩ S) ⊆ π_L(R) ∩ π_L(S), mas a igualdade não vale em geral. A banca troca o operador de conjunto e também a operação resultante, criando uma dupla armadilha.

Alternativa B — ✅ Correta ⟵ GABARITO

Esta é a propriedade válida: π_L(R ∪ S) ≡ π_L(R) ∪ π_L(S). A projeção é distributiva sobre a união. Isso significa que, para otimizar uma consulta que une duas relações e depois projeta atributos comuns, podemos projetar cada relação separadamente e depois unir os resultados. Essa transformação é útil porque reduz o número de tuplas processadas em cada operação, potencialmente acelerando a consulta. A equivalência é garantida porque a união não depende de valores em atributos fora de L.

Alternativa C — ❌ Incorreta

A alternativa afirma que π_L(R ÷ S) ≡ π_L(R) ÷ π_L(S). A divisão (÷) é um operador que responde a perguntas do tipo "quais tuplas de R estão relacionadas a todas as tuplas de S". A projeção não é distributiva sobre a divisão. Projetar antes de dividir pode remover atributos essenciais para a correspondência, alterando o resultado. Não há uma propriedade de equivalência simples que permita essa transformação. A banca explora a confusão entre operadores que têm comportamento algébrico semelhante, mas a divisão é um caso especial que não segue as mesmas regras.

Alternativa D — ❌ Incorreta

A alternativa afirma que π_L(R − S) ≡ π_L(S − R). Há dois problemas. Primeiro, a projeção não é distributiva sobre a diferença, como demonstrado. Segundo, mesmo que fosse, a expressão à direita inverte a ordem da diferença (S − R em vez de R − S), o que produz um resultado completamente diferente. A diferença não é comutativa: R − S ≠ S − R em geral. Portanto, a alternativa está duplamente errada: pela não distributividade e pela inversão dos operandos.

Alternativa E — ❌ Incorreta

A alternativa afirma que π_L1(π_L2(π_L3(R))) ≡ π_L3(R). Isso está invertido. A propriedade correta é que, se L1 ⊆ L2 ⊆ L3, então π_L1(π_L2(π_L3(R))) ≡ π_L1(R), ou seja, o resultado é a projeção sobre o menor conjunto de atributos (L1), não sobre o maior (L3). A alternativa troca o resultado, afirmando que a composição de projeções resulta na projeção sobre L3, o que é falso. A composição de projeções aninhadas sempre resulta na projeção sobre o conjunto mais restritivo de atributos.

Gabarito: letra B — a única propriedade de equivalência válida é a distributividade da projeção sobre a união.

Link permanente: /questoes/fg165222