Questão de Banco de Dados — Consultas e Comandos em SQL — FGV 2024
Banco de Dados›Consultas e Comandos em SQL
Código
fg165198
Banca
FGV
Órgão
CGE PB
Ano
2024
Cargo
ACP ( )
Tabelas Relacionais T1 e T2
Considere as tabelas relacionais T1 e T2, de acordo com as colunas e as instâncias abaixo descritas. Na execução dos comandos SQL, assuma que o mecanismo do banco de dados considera valores NULL como valores desconhecidos (unknown).
Tabela T1
P
N
1
10
2
40
3
20
4
10
Tabela T2
E
Q
P
1
10
2
2
40
3
3
20
8
4
10
NULL
Tomando como base somente as instâncias das tabelas T1 e T2, anteriormente apresentadas, considere o conjunto de dependências funcionais que, possivelmente, poderiam ser verificadas.
(1) P -> N (2) N -> P (3) E -> Q (4) E -> P (5) Q -> P (6) Q -> E (7) P -> E (8) P -> Q
Dessa lista enumerada, o conjunto completo das únicas dependências funcionais que poderiam ser corretamente depreendidas é:
A1, 2;
B1, 3;
C1, 2, 5;
D1, 2, 7, 8;
E1, 3, 7, 8.
Revelar gabarito e comentário▾
GabaritoB — 1, 3;
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”.
Dependências Funcionais em Instâncias Relacionais
Gabarito: letra B — as únicas dependências funcionais corretamente depreendidas das instâncias são (1) P → N e (3) E → Q. Uma dependência funcional X → Y exige que cada valor de X esteja associado a exatamente um valor de Y; as demais dependências falham porque há valores do determinante que se repetem com determinados diferentes ou porque há NULL no determinante, o que impede a determinação.
Uma dependência funcional (DF) é a base do modelo relacional: ela expressa que o valor de um atributo (ou conjunto de atributos) determina, de forma única, o valor de outro atributo. Em termos práticos, se duas linhas têm o mesmo valor no determinante, elas obrigatoriamente devem ter o mesmo valor no determinado. Essa é a regra de ouro que vamos aplicar a cada uma das oito candidatas.
A verificação é feita diretamente sobre as instâncias fornecidas — não se trata de uma regra teórica do esquema, mas de uma checagem empírica: a dependência "vale" naquela instância se, e somente se, não houver violação. Vamos analisar cada uma:
(1) P → N: em T1, cada P (1, 2, 3, 4) aparece uma única vez, com um único N. P=1 → N=10; P=2 → N=40; P=3 → N=20; P=4 → N=10. Não há repetição de P com N diferente. Válida.
(2) N → P: em T1, N=10 aparece para P=1 e P=4. O mesmo N leva a dois P diferentes. Inválida.
(3) E → Q: em T2, cada E (1, 2, 3, 4) aparece uma única vez, com um único Q. E=1 → Q=10; E=2 → Q=40; E=3 → Q=20; E=4 → Q=NULL. Válida — o NULL em Q não viola a DF, pois o determinante E=4 tem um único valor associado (desconhecido).
(4) E → P: em T2, E=4 tem P=NULL. O NULL no determinado não viola a DF por si só, mas aqui o problema é que P=NULL é um valor desconhecido — não podemos afirmar que E determina P, pois não sabemos qual P corresponde a E=4. A banca considera inválida justamente por isso.
(5) Q → P: em T2, Q=10 aparece para E=1 (P=2) e E=4 (P=NULL). O mesmo Q leva a P diferentes (2 e NULL). Inválida.
(6) Q → E: em T2, Q=10 aparece para E=1 e E=4. O mesmo Q leva a E diferentes. Inválida.
(7) P → E: em T2, P=NULL aparece para E=4. Como P é o determinante e há um valor NULL, não é possível afirmar que P determina E — o NULL no determinante quebra a DF. Inválida.
(8) P → Q: em T2, P=NULL aparece para E=4, e P=2 aparece para E=1. O NULL no determinante impede a determinação. Inválida.
A pegadinha central está no tratamento do NULL: a banca explora a confusão entre "NULL no determinado" (que pode ser aceitável) e "NULL no determinante" (que invalida a DF). Além disso, é preciso lembrar que a DF é uma propriedade da instância aqui — não estamos derivando regras do esquema, mas verificando o que os dados suportam.
NULL no determinante
NULL no determinado
Inválida
P → N (T1)
E → Q (T2)
Válida
P → E, P → Q (T2)
N → P, Q → P, Q → E
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Inclui a dependência (2) N → P, que é inválida porque N=10 em T1 está associado a P=1 e P=4. A banca tenta confundir o candidato que inverte a direção da dependência: P → N é válida, mas a recíproca N → P não é.
Alternativa B — ✅ Correta ⟵ GABARITO
Contém exatamente as dependências (1) P → N e (3) E → Q, as únicas que resistem à verificação nas instâncias. É a resposta correta.
Alternativa C — ❌ Incorreta
Acrescenta a dependência (5) Q → P, que é inválida porque Q=10 em T2 está associado a P=2 e P=NULL. O mesmo Q não determina um único P.
Alternativa D — ❌ Incorreta
Inclui as dependências (7) P → E e (8) P → Q, ambas inválidas porque P=NULL em T2 (linha E=4) impede que P determine qualquer coisa — o NULL no determinante quebra a DF.
Alternativa E — ❌ Incorreta
Mistura as válidas (1) e (3) com as inválidas (7) e (8), repetindo o erro da alternativa D quanto ao NULL no determinante.
NÃO CAIA NESSA!
A banca explora a diferença entre NULL no determinado e NULL no determinante. Em (3) E → Q, o NULL em Q (E=4) não viola a DF — o determinante E=4 tem um único valor associado, ainda que desconhecido. Já em (7) e (8), o NULL está no determinante P, o que torna impossível afirmar que P determina qualquer coisa. O candidato que trata NULL como "apenas mais um valor" erra ao aceitar (7) e (8) e ao rejeitar (3).
PEGA ESSA DICA!
Para verificar uma DF X → Y em uma instância, agrupe as linhas por X e confira se Y é constante em cada grupo. Se houver um grupo com dois Y diferentes, a DF falha. Se X tiver NULL, a DF falha de imediato — NULL não é um valor que possa determinar algo. Essa checagem resolve qualquer questão desse tipo em segundos.