Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2023

Banco de DadosSQL
Código
fg068146
Banca
FGV
Órgão
SEDUC-SP
Ano
2023
Nível
Superior
Cargo
Professor de Ensino Fundamental e Médio (Educação Profissional) - Eixo 5 - Informação e Comunicação
Considere os comandos SQL a seguir.create table TT1(A int not null primary key);create table TT2(B intforeign key references TT1(A),C int not null);select * from TT1 left join TT2 on TT1.A = TT2.B;Dado que TT1 e TT2 contêm, respectivamente, 100 e 150 linhas, assinale as expressões que apresentam, na ordem, os números mínimo e máximo de linhas que podem ser produzidas pela execução do comando SELECT, fora a linha de títulos.
  1. A100 e 150.
  2. B100 e 249.
  3. C100 e 250.
  4. D150 e 249.
  5. E250 e 15000.
Revelar gabarito e comentário

GabaritoB — 100 e 249.

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”.

SQL: LEFT JOIN e Cardinalidade

Gabarito: letra B. O número mínimo de linhas em um LEFT JOIN é o número de linhas da tabela à esquerda (100) quando não há correspondências; o máximo é 100 (linhas à esquerda) + 150 (linhas de TT2) - 1 = 249, concentrando todas as correspondências em uma única linha.

A questão cobra a cardinalidade de um LEFT JOIN. A tabela TT1 tem 100 linhas, TT2 tem 150 linhas, e existe uma chave estrangeira de TT2.B para TT1.A. No entanto, para efeito de cálculo dos extremos, a existência da chave estrangeira não impede o cenário de nenhuma correspondência (embora isso viole a integridade referencial, a banca considerou o mínimo teórico). O resultado do LEFT JOIN sempre inclui todas as linhas da tabela da esquerda (TT1). Se não houver nenhuma linha em TT2 que se junte a TT1, o resultado terá exatamente 100 linhas. Já o máximo ocorre quando todas as 150 linhas de TT2 se juntam a uma única linha de TT1, gerando 150 linhas para aquela linha + 99 linhas de TT1 sem correspondência, totalizando 249.

Alternativa A — ❌ Incorreta

Afirma 100 e 150. O máximo está errado: 150 ocorreria se cada linha de TT1 tivesse exatamente uma correspondência (mas TT2 tem 150 linhas, então algumas teriam mais de uma). O máximo é 249.

Alternativa B — ✅ Correta ⟵ GABARITO

100 (mínimo: todas as linhas de TT1 sem correspondência) e 249 (máximo: 150 correspondências em uma única linha de TT1 + 99 linhas restantes).

Alternativa C — ❌ Incorreta

Afirma 100 e 250. O máximo correto é 249, não 250.

Alternativa D — ❌ Incorreta

Afirma 150 e 249. O mínimo não pode ser 150, pois o LEFT JOIN sempre mantém as 100 linhas de TT1. A chave estrangeira não altera esse fato: mesmo com correspondências, as linhas de TT1 com correspondência geram linhas adicionais, mas a base são as 100 linhas.

Alternativa E — ❌ Incorreta

Afirma 250 e 15000. Valores absurdos, sem base em nenhum raciocínio de cardinalidade.

NÃO CAIA NESSA!

A chave estrangeira pode induzir a achar que o mínimo é 150 (todas as linhas de TT2 têm correspondência), mas a banca considera o caso de nenhuma correspondência. O LEFT JOIN não exige correspondência; a chave estrangeira é uma restrição de integridade, não uma condição de junção.

Gabarito: letra B.

Link permanente: /questoes/fg068146