No Campeonato Brasileiro de Futebol, todos os times jogam en...

Próximas questões
Com base no mesmo assunto
Ano: 2022 Banca: FGV Órgão: MPE-GO Prova: FGV - 2022 - MPE-GO - Analista em Informática |
Q1912773 Banco de Dados
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. 

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E

A temática da questão envolve o entendimento das Formas Normais em Banco de Dados, mais especificamente a Forma Normal de Boyce-Codd (BCNF). As Formas Normais são regras para organizar os atributos de uma tabela, de maneira a minimizar redundâncias e evitar problemas como anomalias de inserção, atualização e exclusão de dados.

A BCNF é uma versão aprimorada da Terceira Forma Normal (3NF), que exige que, para cada dependência funcional, o lado esquerdo seja uma chave candidata. Isso significa que todas as não trivial dependências funcionais em uma tabela devem estar determinadas por uma chave candidata, um conjunto minimal de atributos que identificam unicamente um registro na tabela.

No contexto da questão, uma partida de futebol é unicamente identificada pela combinação dos times que estão jogando (mandante e visitante) e a data do jogo. Isso ocorre porque um time não pode jogar mais de uma vez na mesma data. Portanto, para atender à BCNF, a chave primária ou as chaves únicas devem assegurar a unicidade de cada jogo.

É essencial que o conjunto de colunas (time_mandante, time_visitante) esteja presente, pois isso garante que não haverá dois jogos registrados com os mesmos times na mesma função (mandante ou visitante). Porém, isso não é suficiente para garantir que um time não jogará mais de uma vez na mesma data. Para isso, é necessário também estabelecer restrições de unicidade para as colunas (time_mandante, data) e (time_visitante, data), garantindo que cada time só possa ser associado a um jogo por data, seja como mandante ou visitante.

A alternativa E é a correta pois contempla todas essas restrições, combinando três conjuntos de colunas como chaves únicas:

  • (time_mandante, time_visitante) - Garante que não existam duplicatas de jogos entre os mesmos times na mesma função (mandante ou visitante).
  • (time_mandante, data) - Garante que um time não jogue mais de uma vez na mesma data como mandante.
  • (time_visitante, data) - Garante que um time não jogue mais de uma vez na mesma data como visitante.

Com essas chaves estabelecidas, a tabela em questão atenderá à BCNF, evitando redundâncias e anomalias de inserção, atualização e exclusão, e garantindo a integridade dos dados registrados sobre os jogos do Campeonato Brasileiro de Futebol.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Que coisa p0rca...

É só colocar uma chave primária composta formada por (mandante, visitante) e colocar "data" como unique. Só basta 1 tabela, não precisa criar outras porque "data" não é determinante e os gols mandante/visitante não fere a 2fn

A data não pode ser unique e nem uma primary key isolada, pois numa mesma data pode haver vários jogos com times diferentes.

Os gols não podem identificar um registro da tabela, pois a mesma combinação de gols pode acontecer em qualquer outro jogo.

Gabarito letra E: temos 3 combinações possíveis de restrições para identificação de um registro/tupla:

1 - (time_mandante, time_visitante) O time mandante e o time visitante só jogam uma única vez.

2 - (time_mandante, data) O time mandante só joga uma vez numa determinada data.

3 - (time_visitante, data) O time visitante só joga uma vez numa determinada data.

Assim a Forma Normal é atendida.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo