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".
Bah, que questao chata.
Questao de portugues, nao de BD.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo