Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Dúvida] 5N

Qual é o motivo de os IDs da última linha estarem diferentes? Não entendi quase nada dessa 5FN, didática muito ruim.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, William. Tudo bem?

Eu entendo perfeitamente a sua frustração. A 5ª Forma Normal (5FN) é, sem sombra de dúvidas, o conceito mais abstrato, complexo e difícil de visualizar em toda a teoria de modelagem de bancos de dados relacionais. Quando a explicação foca apenas em tabelas de códigos sem mostrar o passo a passo completo, fica parecendo um quebra-cabeça sem sentido.

Você não está errado em achar confuso. Vamos dar um passo para trás, esquecer os números puros por um minuto e focar na regra do negócio para você entender perfeitamente o motivo de aquela última linha ter mudado.


O que diz a Regra de Negócio desse exemplo?

Imagine que a nossa empresa tem uma regra muito específica sobre eventos, departamentos e patrocinadores:

"Se um Departamento X participa de um Evento Y, e esse Evento Y tem o patrocínio do Patrocinador Z, então o Departamento X é obrigado a usar o Patrocinador Z naquele evento."

Isso se chama Dependência de Junção. Significa que os dados estão amarrados de forma cíclica. Se você descobrir duas das informações, a terceira é gerada automaticamente por obrigação da regra.


Desvendando o mistério da última linha (Antes vs. Depois)

Olhe bem para a tabela de cima (Antes). A linha que está destacada em verde e as linhas ao redor nos dizem o seguinte:

  • Linha 1: O Departamento de Vendas (1) participa da Conferência (1) com a TechCorp (1).
  • Linha 2 (Destaque): O Departamento de Vendas (1) participa da Conferência (1) com a FinanSys (1).
  • Linha 3: O Departamento de Marketing (2) participa da Conferência (1) com a FinanSys (2).
  • Linha 4 (A Última): O Departamento de Vendas (1) participa do Workshop (2) com a FinanSys (1).

Onde está o erro que a 5FN veio corrigir?

Se você tentar quebrar a tabela de cima em tabelas menores separadas (que é o que a normalização faz) para guardar apenas as combinações de duas em duas (Ex: quem participa de qual evento / quem namora qual patrocinador), na hora de juntar tudo de novo com um JOIN (Junção), o banco de dados vai criar linhas fantasmas ou cruzamentos errados se os IDs originais fossem mantidos ao pé da letra!

Na tabela de baixo (Depois), a instrutora está mostrando o resultado da reconstrução ideal (a junção das tabelas normalizadas).

A última linha ficou como 2 | 1 | 2 por causa do cruzamento lógico das regras válidas:

  • O número 2 na primeira coluna representa o id_evento 2 (Workshop).
  • O número 1 na segunda coluna representa o id_departamento 1 (Vendas).
  • O número 2 na terceira coluna representa o id_patrocinador 2 (FinanSys).

Se você olhar a tabela de cima, o ID do patrocinador "FinanSys" aparece com duas numerações diferentes dependendo da linha (1 - FinanSys e 2 - FinanSys). Na hora de aplicar a decomposição da 5FN, o banco normaliza esses IDs para garantir que a relação cíclica se mantenha íntegra, eliminando a redundância. A última linha da tabela de baixo mudou para refletir estritamente quais combinações de chaves (id_evento, id_departamento, id_patrocinador) reconroem o cenário sem gerar registros duplicados ou falsos.


Resumo da Ópera: Para que serve a 5FN no mundo real?

A 5FN serve para o seguinte: Garantir que uma tabela grande possa ser dividida em tabelas menores e, quando juntarmos todas elas de volta com um JOIN, o resultado seja rigorosamente idêntico ao início, sem perder nenhuma informação e sem inventar dados que não existiam.

Se uma tabela não puder ser dividida em tabelas menores sem que a sua junção cause bagunça nos dados, ela já está na 5FN. Se ela puder ser dividida e reconstruída perfeitamente (como a instrutora tentou fazer na transição das tabelas), nós a dividimos para economizar espaço e evitar erros de inserção.

Deu para clarear um pouco mais a mente sobre o motivo da troca dos números? Se ainda parecer confuso, me avise e nós montamos um exemplo usando nomes de times, marcas e produtos para o cenário ficar 100% palpável!