Considere que um banco de dados foi criado para dar apoio à ...
SINISTRO (cod-sinistro, data-e-hora, localizacao, cod-rodovia, cod-municipio, quantidade-de-vitimas)
RODOVIA (cod-rodovia, nome, estadual-ou-federal)
MUNICIPIO (cod-municipio, uf, quantidade-de-habitantes)
Os atributos que formam as chaves primárias de cada tabela estão sublinhados.
Na tabela SINISTRO, há duas chaves estrangeiras: cod-rodovia, que indica onde ocorreu o sinistro, caso ele tenha ocorrido em uma rodovia, e cod-municipio, que indica em que municipio ocorreu o sinistro.
Nesse contexto, considere o seguinte comando SQL:
SELECT S.cod-rodovia, S.data-e-hora, quantidade-de-vitimas FROM SINISTRO S WHERE S.cod-rodovia IN ( SELECT R.cod-rodovia FROM RODOVIA R WHERE R.estadual-ou-federal = 'federal') AND EXISTS ( SELECT * FROM MUNICIPIO M WHERE M.cod-municipio = S.cod-municipio AND M.quantidade-de-habitantes < 50000)
Os resultados produzidos pela execução desse comando apresentam o código da rodovia, a data e hora e a quantidade de vítimas de sinistros ocorridos em
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta correta: B - rodovias federais, em municípios com menos de 50.000 habitantes.
Para resolver essa questão, é necessário compreender a lógica das instruções SQL e o relacionamento entre as tabelas de um banco de dados. A questão apresenta um contexto de um banco de dados com tabelas relacionadas a sinistros de trânsito, municípios e rodovias. Para recuperar informações específicas, é usado um comando SQL com cláusulas WHERE, IN e EXISTS.
O comando SQL na questão está selecionando os registros da tabela SINISTRO que atendem a dois critérios conjuntamente:
- A rodovia onde ocorreu o sinistro é federal. Isso é verificado pela subconsulta que retorna os códigos das rodovias federais a partir da tabela RODOVIA. A cláusula IN é utilizada para filtrar os sinistros que ocorreram nessas rodovias.
- O município onde ocorreu o sinistro tem menos de 50.000 habitantes. O operador EXISTS é empregado para verificar a existência de um município com essas características na tabela MUNICIPIO, que está relacionado ao sinistro em questão.
A cláusula WHERE do SQL faz uso de ambas as condições acima para filtrar os dados. A alternativa B é a correta porque ela reflete precisamente o que a consulta SQL especifica: estamos selecionando sinistros que ocorreram especificamente em rodovias federais dentro de municípios com menos de 50.000 habitantes. A consulta não se refere a sinistros que ocorreram em rodovias federais que passam por municípios maiores ou menores, nem rodovias federais de forma geral, mas sim, de forma restrita, aos que aconteceram em municípios com a população menor que o valor estipulado.
Para obter a resposta correta, você deve ter uma compreensão sólida da sintaxe SQL, saber como as subconsultas são usadas para filtrar resultados dentro de uma consulta maior e entender como os relacionamentos entre as tabelas funcionam, particularmente o uso de chaves estrangeiras que ligam os sinistros às informações das rodovias e dos municípios.
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
B - rodovias federais, em municípios com menos de 50.000 habitantes.rodovias federais que têm como
A) Errada - A subconsulta busca rodovias federais, mas não especifica se o sinistro ocorreu nesses trechos.
C) Errada - A subconsulta não indica que a rodovia deve ter origem ou destino no município mencionado.
D) Errada - A condição envolvendo o município e a quantidade de habitantes não está correta.
E) Errada - Não há critério na consulta para selecionar municípios com duas ou mais rodovias federais.
SELECIONE informações sobre SINISTROS ONDE RODOVIA é Federal E EXISTAM MUNICIPIOS com menos de 5.000 habitantes.
*O erro da letra A é que no comando da questão não fala nada sobre "passar por municípios".
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo