Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Normalização do modelo floco de neve

Bom dia a todos.

Primeiramente gostaria de confirmar se a normalização dos dados traz benefícios para o processamento uma base de dados com grande número de observações (linhas). Eu não sou da área de TI, mas eu imagino que essa seja a grande vantagem de se normalizar os dados.

Em segundo lugar, eu gostaria de entender melhor esse conceito de redundância entre os dados, pois para mim pareceu continuar havendo a redundância. Por exemplo, em um modelo desnormalizado os dados seriam assim:

Cliente - Estado

A - RJ

B - RJ

C - SP

A redundância seria a repetição por duas vezes do indicador de estado RJ, certo? Agora, nesse mesmo exemplo, o modelo normalizado ficaria assim:

Código estado - Estado

01 - RJ

02 - SP

Cliente - Código estado

A - 01

B - 01

C - 02

Assim, a redundância continuaria acontecendo, não mais com a sigla do estado, mas com o código que atribuímos ao estado.

Talvez eu não tenha entendido o procedimento. Gostaria de saber se minha linha de raciocínio está correta. E se estiver, qual é a vantagem desse procedimento?

1 resposta
solução!

Oi Eric! Como vai?

Sim, a normalização traz benefícios, não só em questão de evitar a redundância, mas de flexibilização para alteração de valores, ou na adição de novos relacionamentos.

A sua lógica faz sentido, mas é importante entender que a redundância se aplica a valores, e não códigos de identificação.

A grande vantagem da identificação, é que se houver a necessidade de alterar algum valor, você não precisa fazer isso item por item. Você vai alterar apenas na tabela que relaciona o identificador com valor. Como o identificador permanece o mesmo, por espelhamento, a mudança estará feita para todas as relações do seu banco.

Pode ser difícil de enxergar isso no exemplo usado. Pensando nisso, aqui seguem mais alguns exemplos.

Vamos supor que sua empresa faz entregas, e um cliente muda de endereço. É muito mais otimizado você mudar o endereço na tabela que relaciona código e endereço, e isso ser espelhado para outras tabelas, do que possuir uma tabela única, e precisar mudar item por item.

Existem outras aplicações também:

Vamos supor que você tem um banco de dados que relaciona pessoas, time e projeto. Se tivéssemos uma tabela única, sem identificadores, e a partir de agora, quiséssemos adicionar uma dimensão de cliente, enfrentaríamos os seguintes problemas:

*Não teríamos como adicionar clientes a projetos que não tem esse atributo sem criar valores nulos.

*Precisaríamos repetir valores de pessoas, times, e projetos para cada cliente.

*Se algum desses times se alterasse, precisaríamos alterar esse campo diversas vezes

*Correríamos maior risco de errar algum valor, e criar anomalias.

Já em tabelas separadas com identificadores, poderíamos criar mais duas tabelas (cliente/id_cliente e id_cliente/projeto) e resolver o nosso problema!

Por favor, me avise se a explicação fez sentido pra você. Se quiser saber mais sobre normalização de banco de dados pode conferir os links abaixo:

https://pt.stackoverflow.com/questions/151323/o-que-%C3%A9-normaliza%C3%A7%C3%A3o-de-banco-de-dados

https://medium.com/@diegobmachado/normaliza%C3%A7%C3%A3o-em-banco-de-dados-5647cdf84a12