Questão nº 50

Questão de Banco de Dados e Gestão da Informação · FGV SEFAZ-AM 2022 - Prova I (nº 50)

FGV2022Analista de Tecnologia da Informação da Fazenda EstadualBanco de Dados e Gestão da Informação
Gabarito: Ever comentário ↓

Analise o comando a seguir.

`SELECT * FROM T1 FULL OUTER JOIN T2 ON T1.A=T2.A`

Sabe-se que a coluna A foi definida como chave primária tanto em T1 como em T2, e que T1 e T2 contêm, respectivamente, 20 e 30 linhas.
Assinale a opção que apresenta a estimativa do número de linhas produzidas pela execução do comando acima.

Resposta comentada

Gabarito Alternativa E

Um FULL OUTER JOIN combina todas as linhas de duas tabelas, incluindo as que têm correspondência (match) e as que não têm, preenchendo com NULL as colunas da tabela onde não houve correspondência. Como A é chave primária em ambas, cada valor de A é único em sua tabela. O número de linhas resultantes será a união dos valores distintos de A presentes em T1 e T2.

  • Cenário Mínimo: Ocorre quando todos os 20 valores de A de T1 encontram correspondência em T2. Nesse caso, teremos 20 linhas correspondentes, mais as linhas de T2 que não tiveram correspondência em T1. Se T1.A for um subconjunto de T2.A, teremos 20 (correspondentes) + (30 - 20) (não correspondentes em T2) = 30 linhas.
  • Cenário Máximo: Ocorre quando nenhum valor de A de T1 encontra correspondência em T2. Nesse caso, teremos 20 linhas de T1 (com NULL para T2) + 30 linhas de T2 (com NULL para T1) = 50 linhas.

Portanto, o número de linhas estará entre 30 e 50.

  • (A) Incorreta: 20 é o número de linhas da menor tabela, mas o FULL OUTER JOIN sempre incluirá no mínimo todas as linhas da maior tabela se houver alguma correspondência, ou a soma das duas se não houver nenhuma.
  • (B) Incorreta: 30 é o número de linhas da maior tabela e representa o mínimo de linhas que podem ser retornadas, mas não é um valor exato, pois pode haver mais linhas se houver valores de A em T1 que não estão em T2. Armadilha da banca: Esta alternativa é tentadora porque 30 é o número de linhas da tabela maior, e em um cenário onde todos os registros da tabela menor (T1) encontram correspondência na tabela maior (T2), e T2 tem registros adicionais, o resultado seria 30. No entanto, o FULL OUTER JOIN também considera o caso em que T1 tem registros que não estão em T2, o que aumentaria o número de linhas para além de 30. O termo "exatamente" a torna incorreta.
  • (C) Incorreta: 600 seria o resultado de um CROSS JOIN (produto cartesiano), que não é o caso aqui, pois há uma condição ON.
  • (D) Incorreta: O limite inferior da estimativa é 30, não 20.
  • (E) Correta: A estimativa correta varia entre o mínimo de 30 (quando todos os valores de A de T1 estão em T2) e o máximo de 50 (quando nenhum valor de A de T1 está em T2).

Fonte: FGV SEFAZ-AM 2022 - Prova I Analista de Tecnologia da Informação da Fazenda Estadual (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho