Questão nº 42

Questão de Tecnologia da Informação · FGV MPGO Servidores 2022 (nº 42)

FGV2022Analista em InformáticaTecnologia da Informação
Gabarito: Ever comentário ↓

No Campeonato Brasileiro de Futebol, todos os times jogam entre si duas vezes, alternando os papeis de mandante e visitante. Um time não pode jogar mais de uma vez na mesma data.
Nesse contexto, considere uma tabela de bancos de dados que armazene simplificadamente essas informações, com as seguintes colunas: `time_mandante`, `time_visitante`, `data`, `gols_mandante`, `gols_visitante`.
À luz dessas premissas, assinale a lista com todas as combinações de colunas que devem, necessária e exclusivamente, ser estabelecidas como restrições (primary key ou unique) para atender à Forma Normal Boyce-Codd.

Resposta comentada

Gabarito Alternativa E

Conceito-chave: Na Forma Normal Boyce-Codd (FNBC), toda dependência funcional (regra que diz "se eu sei o valor de X, sei o valor de Y") deve ter como determinante (o lado X) uma superchave (uma coluna ou conjunto que identifica a linha de forma única). No problema, as regras do campeonato criam dependências funcionais escondidas: saber o time e a data me diz exatamente qual é o adversário e o placar.

  • (A) Incorreta: (time_mandante, time_visitante) identifica o jogo, mas não impede que o mesmo time jogue duas vezes na mesma data (ex: time A como mandante no dia 10 e time A como visitante no dia 10). Viola a regra "um time não pode jogar mais de uma vez na mesma data".
  • (B) Incorreta: Faltam as chaves (time_mandante, data) e (time_visitante, data) que garantem que cada time joga uma única vez por data. Sem elas, a tabela permite jogos simultâneos do mesmo time.
  • (C) Incorreta: Incluir gols_mandante e gols_visitante na chave é um erro grave: os gols são atributos dependentes do jogo, não fazem parte da identificação. Isso criaria redundância e violaria a FNBC, pois (time_mandante, data) determinaria os gols sem ser superchave.
  • (D) Incorreta: A dupla (time_mandante, time_visitante) e (time_visitante, time_mandante) são a mesma informação espelhada (o jogo A vs B é o mesmo que B vs A). Isso não resolve a restrição de data, que é a regra de negócio mais forte.
  • (E) Correta: São necessárias três restrições: (time_mandante, time_visitante) para identificar o confronto único (jogo de ida e volta são linhas diferentes, pois a ordem muda), (time_mandante, data) e (time_visitante, data) para garantir que nenhum time jogue duas vezes na mesma data. Essas três juntas eliminam todas as dependências parciais e garantem que todo determinante seja superchave, atendendo à FNBC.

Armadilha da banca (no distrator B): A alternativa B parece correta porque lista as duas restrições de data, mas omite a chave primária do jogo em si. Sem (time_mandante, time_visitante), você não consegue identificar qual é o jogo (a linha não tem identidade única), e a tabela ficaria sem PK, o que viola a definição de FNBC (que exige que toda tabela tenha uma chave primária). A banca testa se você percebe que a FNBC exige todas as restrições necessárias, não apenas as mais óbvias.

Fonte: FGV MPGO Servidores 2022 Analista em Informática (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho