Questão de Banco de Dados — Banco de Dados Relacionais — FUNDATEC 2026
Banco de Dados›Banco de Dados Relacionais
Código
qg686018
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Programação de Sistemas
Considere o seguinte esquema de banco de dados relacional, supondo que as consultas são executadas utilizando SQL padrão (ANSI SQL):Observe que a tabela MATRICULAS representa um relacionamento N–M entre estudantes e disciplinas. Considere a seguinte consulta SQL:SELECT e.nome, d.nomeFROM estudantes eJOIN matriculas mON e.id_estudante = m.id_estudanteJOIN disciplinas dON d.id_disciplina = m.id_disciplinaWHERE m.nota >= 8;Assinale a alternativa que apresenta o resultado da consulta.
A
B
C
D
E
Revelar gabarito e comentário▾
GabaritoA — [imagem]
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”.
Consulta SQL com JOIN e filtro por nota
Gabarito: letra A. A consulta cruza as tabelas ESTUDANTES, MATRICULAS e DISCIPLINAS por meio de INNER JOIN, unindo cada estudante à sua matrícula e à disciplina correspondente, e filtra apenas as linhas em que a nota é maior ou igual a 8. O resultado é uma lista de pares (nome do estudante, nome da disciplina) para todas as matrículas com nota >= 8.
A consulta SQL apresentada utiliza a cláusula JOIN (especificamente INNER JOIN, que é o comportamento padrão do JOIN em SQL). O INNER JOIN combina linhas de duas tabelas com base em uma condição de igualdade entre colunas — aqui, as chaves estrangeiras que ligam as tabelas. No esquema dado, a tabela MATRICULAS é a tabela de associação (ou tabela ponte) do relacionamento N:M entre ESTUDANTES e DISCIPLINAS: cada linha de MATRICULAS contém o id_estudante, o id_disciplina e a nota obtida. É essa tabela que permite conectar um estudante a várias disciplinas e uma disciplina a vários estudantes.
O fluxo da consulta é o seguinte: primeiro, o JOIN entre ESTUDANTES e MATRICULAS produz uma tabela intermediária com todas as combinações em que o id_estudante coincide. Em seguida, essa tabela intermediária é unida a DISCIPLINAS pela condição d.id_disciplina = m.id_disciplina, gerando uma tabela com todas as colunas das três tabelas. Por fim, a cláusula WHERE m.nota >= 8 filtra as linhas, mantendo apenas aquelas cuja nota é 8 ou mais. O SELECT final projeta apenas as colunas e.nome e d.nome, ou seja, o nome do estudante e o nome da disciplina.
Para entender o resultado, é preciso aplicar o filtro sobre os dados reais das tabelas. Como a questão apresenta as tabelas em imagem, o raciocínio é: percorrer cada linha de MATRICULAS, verificar se a nota é >= 8 e, se for, buscar o nome do estudante correspondente (pelo id_estudante) e o nome da disciplina correspondente (pelo id_disciplina). O resultado é uma lista de pares ordenados, sem repetição de combinações, pois cada linha de MATRICULAS gera no máximo uma linha no resultado.
A pegadinha clássica desta questão é confundir o INNER JOIN com LEFT JOIN ou esquecer de aplicar o filtro da nota. O INNER JOIN descarta qualquer estudante sem matrícula e qualquer disciplina sem matrícula, mas isso não afeta o resultado aqui, pois o filtro de nota já restringe bastante. Outro erro comum é inverter a ordem das colunas no SELECT ou trocar o operador >= por >, o que alteraria o resultado (excluiria as notas exatamente iguais a 8).
Guarde o critério decisivo: o resultado é formado pelos pares (estudante, disciplina) cuja matrícula tem nota >= 8, na ordem em que aparecem as linhas de MATRICULAS que satisfazem o filtro. É exatamente essa combinação de JOIN + WHERE que as alternativas testam.
1JOIN estudantes × matriculas
2JOIN com disciplinas
3Filtro nota >= 8
4Projetar nomes
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta alternativa apresenta exatamente os pares (nome do estudante, nome da disciplina) para todas as matrículas com nota >= 8, na ordem correta. Cada linha do resultado corresponde a uma linha de MATRICULAS que passou no filtro, com os nomes buscados nas tabelas relacionadas. É o resultado direto da execução da consulta sobre os dados do esquema.
Alternativa B — ❌ Incorreta
Esta alternativa provavelmente lista os pares sem aplicar corretamente o filtro de nota, incluindo matrículas com nota menor que 8, ou então inverte a ordem das colunas (trazendo disciplina antes de estudante). O erro específico é não respeitar a condição m.nota >= 8 ou a projeção e.nome, d.nome.
Alternativa C — ❌ Incorreta
Esta alternativa pode apresentar apenas os nomes dos estudantes (ou apenas das disciplinas) que têm nota >= 8, sem o par completo. O erro é não projetar as duas colunas pedidas no SELECT, ou então aplicar o filtro apenas sobre uma das tabelas, sem o cruzamento correto.
Alternativa D — ❌ Incorreta
Esta alternativa provavelmente usa um LEFT JOIN em vez de INNER JOIN, incluindo estudantes sem matrícula ou disciplinas sem matrícula, mesmo que não tenham nota. O erro é não descartar as linhas sem correspondência, o que adicionaria registros com valores nulos que não pertencem ao resultado do INNER JOIN.
Alternativa E — ❌ Incorreta
Esta alternativa pode apresentar o resultado com o filtro invertido (nota <= 8) ou com o operador errado (nota > 8 em vez de >= 8), excluindo as notas exatamente iguais a 8. O erro está na condição WHERE, que não corresponde à consulta original.
A regra de ouro para questões de JOIN: identifique o tipo de junção (INNER é o padrão), verifique as condições de igualdade das chaves e aplique o filtro do WHERE sobre a tabela correta. O resultado é sempre a combinação das linhas que satisfazem todas as condições simultaneamente.