Questão de Banco de Dados — Modelo relacional — FCC 2025
Banco de Dados›Modelo relacional
Código
fc073418
Banca
FCC
Órgão
Prefeitura de São Paulo - SP
Ano
2025
Nível
Superior
Cargo
Auditor Municipal de Controle Interno - AMCI Área de Especialização: Geral - Prova 3 Conhecimentos Especializados
Um Auditor de uma Prefeitura está analisando o banco de dados do sistema responsável por gerenciar pagamentos realizados aos fornecedores. O sistema utiliza o modelo de dados relacional e apresenta a seguinte estrutura:O Auditor deseja listar todos os pagamentos realizados, exibindo o NomeFornecedor, O CNPJ e o ValorPagamento. É necessário relacionar as tabelas Pagamentos e Fornecedores, com base no modelo de dados relacional, para obter as informações corretamente.A consulta SQL correta para essa auditoria é
ASELECT p.NomeFornecedor, f.CNPJ, p.ValorPagamento FROM Pagamentos p JOIN Fornecedores f ON p.lDFornecedor = f. IDPagamento;
BSELECT f.NomeFornecedor, f.CNPJ, p.ValorPagamento FROM Pagamentos p FULL JOIN Fornecedores f;
CSELECT f.NomeFornecedor, f.CNPJ, p.ValorPagamento FROM Pagamentos p INNER JOIN Fornecedores f ON p.IDFornecedor = f. IDFornecedor:
DSELECT NomeFornecedor, CNPJ, ValorPagamento FROM Pagamentos, Fornecedores;
ESELECT f.NomeFornecedor, f.CNPJ, p.ValorPagamento FROM Pagamentos p LEFT JOIN Fornecedores f ON p.IDPagamento = f . IDFornecedor;
Revelar gabarito e comentário▾
GabaritoC — SELECT f.NomeFornecedor, f.CNPJ, p.ValorPagamento FROM Pagamentos p INNER JOIN Fornecedores f ON p.IDFornecedor = f. IDFornecedor:
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”.
Linguagem SQL: Junção de Tabelas (JOIN)
Gabarito: letra C. A consulta correta utiliza o operador INNER JOIN para combinar as tabelas Pagamentos e Fornecedores com base na igualdade entre a chave estrangeira IDFornecedor da tabela Pagamentos e a chave primária IDFornecedor da tabela Fornecedores, permitindo recuperar os dados solicitados de forma consistente.
Para realizar a auditoria, é necessário cruzar as informações das duas tabelas. A estrutura relacional apresentada mostra que a tabela Pagamentos possui o atributo IDFornecedor (chave estrangeira), que referencia a tabela Fornecedores (onde IDFornecedor é a chave primária). O INNER JOIN é o operador adequado para retornar apenas os registros que possuem correspondência em ambas as tabelas, garantindo que cada pagamento seja associado ao seu respectivo fornecedor.
Alternativa A — ❌ Incorreta
O erro está na condição de junção (ON p.lDFornecedor = f. IDPagamento). A consulta tenta relacionar a chave estrangeira de fornecedor com a chave primária de pagamento, o que é logicamente incorreto e não produzirá o resultado esperado.
Alternativa B — ❌ Incorreta
O uso de FULL JOIN sem uma cláusula ON ou USING é sintaticamente inválido na maioria dos SGBDs relacionais. Além disso, o FULL JOIN retornaria todos os registros de ambas as tabelas, mesmo sem correspondência, o que não atende ao objetivo de listar pagamentos realizados.
Alternativa C — ✅ Correta ⟵ GABARITO
Esta alternativa utiliza a sintaxe correta: seleciona os campos desejados (f.NomeFornecedor, f.CNPJ, p.ValorPagamento) e realiza a junção correta entre as tabelas Pagamentos (p) e Fornecedores (f) através da coluna comum IDFornecedor, que estabelece a integridade referencial entre elas.
Alternativa D — ❌ Incorreta
Esta consulta realiza um produto cartesiano (cross join implícito), combinando cada linha de Pagamentos com todas as linhas de Fornecedores. Isso resultaria em um conjunto de dados massivo e incorreto, sem filtrar apenas as associações válidas entre pagamento e fornecedor.
Alternativa E — ❌ Incorreta
O erro está na condição de junção (ON p.IDPagamento = f . IDFornecedor). A consulta tenta relacionar a chave primária da tabela Pagamentos com a chave primária da tabela Fornecedores, o que não faz sentido relacional e não recupera os dados corretamente.
PEGA ESSA DICA!
Ao analisar questões de SQL, sempre identifique primeiro as chaves primárias e estrangeiras no modelo. A condição do JOIN deve sempre comparar a chave estrangeira de uma tabela com a chave primária correspondente da outra tabela relacionada.