ATENÇÃO!Na próxima questão, considere as tabelas de banco de...
- T1, com uma única coluna A1, onde A1 é a chave primária;
- T2, com uma única coluna A2, onde A2 é a chave primária, e A2 é também uma chave estrangeira que referencia T1.
As instâncias de T1 e T2 contêm, respectivamente, 12 e 10 linhas.
ATENÇÃO!
Na próxima questão, considere as tabelas de banco de dados:
Com referência às tabelas T1 e T2, o comando SQL
select t1.A1, t2.A2
from T1,T2
where t1.A1 <> t2.A2
order by 1
produzirá um resultado com
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: B - 110 linhas.
Para resolver essa questão, é necessário compreender a natureza das operações com jointuras (joins) em SQL e o impacto das restrições de chave primária (PRIMARY KEY) e chave estrangeira (FOREIGN KEY). Além disso, é essencial entender o operador de desigualdade (<>) usado na cláusula WHERE e o que ele implica em termos dos resultados retornados.
A consulta SQL apresentada realiza uma jointura cartesiana (também conhecida como produto cartesiano) entre as tabelas T1 e T2. Dado que T1 tem 12 linhas e T2 tem 10 linhas, a jointura cartesiana resulta inicialmente em 12 * 10 = 120 combinações possíveis de linhas.
Contudo, a consulta especifica um filtro com a cláusula WHERE que exclui as linhas onde os valores de A1 e A2 são iguais (t1.A1 <> t2.A2). Uma vez que A2 é uma chave estrangeira que referencia a chave primária A1 de T1, sabemos que existem 10 valores em T2 que correspondem exatamente a 10 valores em T1.
Essas 10 combinações de linhas onde A1 é igual a A2 serão excluídas do resultado final. Portanto, das 120 combinações iniciais, subtraímos essas 10 combinações diretas, resultando em:
120 - 10 = 110 linhas no resultado final.
Entender que uma chave estrangeira estabelece uma relação de correspondência direta a linhas específicas em outra tabela é fundamental para determinar o número exato de linhas em conjuntos de resultados envolvendo estas chaves.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GAB B
O produto cartesiano vai gerar 120 linhas (12x10)
Desses, 10 serão iguais já que os 10 registros T2 apontam para T1
120 - 10 = 110
2 chaves de T1 serão diferentes das 10 de T2
10 chaves de T1 serão diferentes das 9 de T2
20 + 90 = 110
b-
essa query faz um cross join de todos os valores de T1 e T2 usando como criterio T1.a1 <> T2.a2, q significa not equal to. como os valores A2 de T2 sao Fks de T1.A1 e nao ha valores repetidos por A1 ser PK, a query ira prosuzir 110 linhas usando a combinacao de T1 com 12 tuplas e T2 com 10
http://sqlfiddle.com/#!9/0a2131/1
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo