Questão de Banco de Dados — Banco de Dados Transacionais (OLTP) — VUNESP 2023
Banco de Dados›Banco de Dados Transacionais (OLTP)
Código
vu196887
Banca
VUNESP
Órgão
SP Regula
Ano
2023
Cargo
ARSP ( )
Um banco de dados relacional de um sistema de informação de uma loja possui as seguintes tabelas, as quais são apresentadas juntamente com seus dados na sua integralidade.
Cliente
Id_C (PK)
Nome_Cliente
1
A
2
B
3
C
Produto
Id_P (PK)
Nome_Produto
Preco_Vitrine
1
Celular
2000,00
2
Televisor
1700,00
Venda
Id_V (PK)
Id_C (FK)
Data
1
1
01/09/2023
2
1
01/09/2023
3
2
02/09/2023
Item_Venda
Id_I (PK)
Id_V (FK)
Id_P (FK)
Quantidade
Preco_Venda
1
1
2
1
1700,00
2
1
1
1
1600,00
3
2
2
1
1700,00
4
3
1
1
2000,00
Com base nessas informações, assinale a alternativa correta.
ANo dia 01/09/2023, a quantidade de produtos “Celular” vendidos é igual a 1.
BO banco de dados apresenta problema de integridade referencial, já que há uma ocorrência em que o celular foi vendido a um preço diferente daquele anunciado na vitrine.
CUma unidade do produto “Televisor” foi vendida com desconto ao cliente A.
DO banco de dados apresenta problema de integridade referencial, uma vez que o cliente C não está envolvido em nenhuma venda.
EO cliente A efetuou três compras na loja, totalizando quatro itens adquiridos.
Revelar gabarito e comentário▾
GabaritoA — No dia 01/09/2023, a quantidade de produtos “Celular” vendidos é igual a 1.
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”.
Banco de dados relacional: leitura de tabelas e integridade referencial
Gabarito: letra A. No dia 01/09/2023, a quantidade de produtos “Celular” vendidos é igual a 1, pois a única venda de celular nessa data consta no Item_Venda de Id_I = 2, com quantidade 1. As demais alternativas ou fazem afirmações falsas sobre os dados ou confundem o conceito de integridade referencial, que trata da validade das chaves estrangeiras, e não de coerência de preços ou de clientes sem vendas.
A questão exige, antes de tudo, saber ler um banco de dados relacional: os dados estão distribuídos em tabelas que se relacionam por chaves. A tabela Venda liga um cliente (Id_C) a uma venda (Id_V); a tabela Item_Venda liga cada venda a um produto (Id_P), com quantidade e preço praticado. Para saber quantos celulares foram vendidos em 01/09/2023, é preciso percorrer essa cadeia: identificar as vendas da data, depois os itens dessas vendas que são do produto “Celular” e, por fim, somar as quantidades.
Vamos fazer esse caminho com os dados fornecidos. As vendas do dia 01/09/2023 são as de Id_V = 1 e Id_V = 2 (ambas do cliente A). Os itens dessas vendas são:
Ou seja, no dia 01/09/2023 foram vendidos 1 celular (item 2) e 2 televisores (itens 1 e 3). A alternativa A está correta ao afirmar que a quantidade de celulares vendidos nessa data é 1.
Agora, o conceito de integridade referencial: é a regra que garante que um valor de chave estrangeira em uma tabela deve existir como chave primária na tabela referenciada (ou ser nulo, se permitido). Em outras palavras, não pode haver um Item_Venda apontando para uma Venda que não existe, nem uma Venda apontando para um Cliente inexistente. No banco da questão, todos os Id_V em Item_Venda existem na tabela Venda, e todos os Id_C em Venda existem na tabela Cliente — logo, não há violação de integridade referencial. Preço diferente do anunciado na vitrine é uma questão de consistência de dados de negócio, não de integridade referencial; e um cliente sem vendas é perfeitamente válido (não há regra que obrigue todo cliente a comprar).
Guarde essa distinção: integridade referencial = chaves estrangeiras válidas; coerência de valores entre tabelas (como preço) é outra categoria de restrição. É exatamente nessa fronteira que as alternativas B, C e D tentam confundir.
Critério
Alternativa A (correta)
Alternativa B
Alternativa C
Alternativa D
Alternativa E
Afirmação central
1 celular vendido em 01/09/2023
Problema de integridade referencial por preço diferente
Televisor vendido com desconto ao cliente A
Problema de integridade referencial por cliente sem venda
Cliente A fez 3 compras, 4 itens
Verificação nos dados
Vendas de 01/09: Id_V=1 e 2; único celular é o item Id_I=2, qtd=1
Preço de venda (R$1.600) ≠ preço de vitrine (R$2.000) — mas todas as FKs são válidas
Televisores vendidos ao cliente A (itens 1 e 3) têm preço R$1.700 = preço de vitrine
Cliente C não tem venda, mas todos os Id_C em Venda existem na tabela Cliente
Cliente A tem 2 vendas (Id_V=1 e 2) com 3 itens no total
Conceito de integridade referencial
Não se aplica (é contagem correta)
❌ Confunde com consistência de negócio
Não se aplica (é análise de preço)
❌ Confunde com regra de negócio
Não se aplica (é contagem)
Veredito
✅ Correta
❌ Incorreta
❌ Incorreta
❌ Incorreta
❌ Incorreta
Alternativa A — ✅ Correta ⟵ GABARITO
Como demonstrado, no dia 01/09/2023 as vendas foram as de Id_V = 1 e Id_V = 2. O único item com produto “Celular” (Id_P = 1) é o Item_Venda de Id_I = 2, com quantidade 1. Portanto, a quantidade de celulares vendidos nessa data é exatamente 1.
Alternativa B — ❌ Incorreta
Afirma que há problema de integridade referencial porque o celular foi vendido a preço diferente do anunciado na vitrine. Isso é um equívoco conceitual: a integridade referencial diz respeito à validade das chaves estrangeiras — todo Id_V e Id_P em Item_Venda existem nas tabelas Venda e Produto, respectivamente. A diferença entre Preco_Vitrine (R$ 2.000,00) e Preco_Venda (R$ 1.600,00) é uma questão de consistência semântica ou de regra de negócio (um desconto, por exemplo), não uma violação de integridade referencial.
Alternativa C — ❌ Incorreta
Diz que uma unidade do produto “Televisor” foi vendida com desconto ao cliente A. Vejamos: o cliente A fez as vendas 1 e 2. Os itens dessas vendas são os de Id_I = 1 (Televisor, preço 1.700,00), Id_I = 2 (Celular, preço 1.600,00) e Id_I = 3 (Televisor, preço 1.700,00). O preço de vitrine do Televisor é R$ 1.700,00 — ou seja, os dois televisores vendidos ao cliente A foram vendidos pelo preço cheio, sem desconto. O desconto ocorreu apenas no Celular (R$ 1.600,00 contra R$ 2.000,00 de vitrine).
Alternativa D — ❌ Incorreta
Afirma que há problema de integridade referencial porque o cliente C não está envolvido em nenhuma venda. Isso não é violação de integridade referencial: a regra exige que toda venda aponte para um cliente existente, mas não exige que todo cliente tenha venda. O cliente C simplesmente não comprou nada — situação perfeitamente válida. A integridade referencial está preservada, pois todos os Id_C em Venda (1 e 2) existem na tabela Cliente.
Alternativa E — ❌ Incorreta
Diz que o cliente A efetuou três compras, totalizando quatro itens. Na verdade, o cliente A fez duas vendas (Id_V = 1 e Id_V = 2), e o total de itens dessas vendas é três (itens 1, 2 e 3). A alternativa erra tanto no número de compras quanto no total de itens. O cliente B, por sua vez, fez uma venda (Id_V = 3) com um item (Id_I = 4).
NÃO CAIA NESSA!
A banca explora a confusão entre integridade referencial (validade das chaves estrangeiras) e consistência de dados de negócio (como preço coerente ou cliente com venda). Nas alternativas B e D, o enunciado apresenta situações que parecem "erros" no banco, mas não violam a integridade referencial — são apenas fatos do domínio. Fique atento: integridade referencial só se viola quando uma chave estrangeira aponta para um registro inexistente.
PEGA ESSA DICA!
Para resolver questões com tabelas, monte o caminho das chaves: comece pela tabela que tem o dado que você procura (ex.: data na Venda), suba para a tabela que liga (Item_Venda) e chegue ao dado desejado (Produto). Anote cada passo — isso evita contar itens de vendas erradas ou somar quantidades de produtos diferentes.