quarta-feira, 12 de outubro de 2016

[BD] Formas Normais


Fala galera!

Hoje vamos trocar uma ideia maneira sobre um processo muito legal de aprender e aplicar no desenvolvimento de aplicações onde se é utilizado Banco de Dados relacional. É conhecido como Normalização em banco de dados.


Certamente já ouviram falar da normalização em alguma matéria na faculdade ou curso e observaram que é algo extremamente importante de se aplicar, mas que em alguns casos não nos atentamos e deixamos passar.

Então, o que é normalização?

Normalização é um processo utilizado com o objetivo de manter a organização em todas as tabelas no banco de dados, tornando-se possível evitar erros como redundância de dados, falhas em projetos e etc.
A normalização é o processo de organizar os dados em um banco de dados. Isso inclui criar tabelas e estabelecer relacionamentos entre essas tabelas de acordo com as regras criadas para proteger os dados e para tornar o banco de dados mais flexíveis, eliminando a redundância e dependência inconsistente.
          fonte: Suporte Microsoft

Conforme mencionado na citação acima, a normalização ajuda a evitar redundâncias e dependência inconsistente. Vamos descrever de forma simples cada um deles:

 Redundância

A redundância existe quando um ou mais dados existem em diersas entidades (tabelas) do banco de dados, causando um grande consumo de espaço de armazenamento e problemas em manutenções. Se o mesmo dado estiver em em tabelas diferentes e for necessário atualizar, será preciso executar essa atualização e todas as tres.
Um exemplo simples para isso é o caso do endereço do usuário, por exemplo. Se três - ou mais - tabelas tiverem o endereço, será necessário atualizá-lo em todos eles.

Dependência inconsistente

Os dados devem ser armazenados de acordo com a entidade. Para ficar melhor entendido veja o exemplo:
Um usuário procura informações do cliente (como endereço) na tabela de Clientes, mas não é interessante que nesta mesma tabela o usuário encontre o salário do vendedor - responsável por esse cliente - na tabela de Clientes e sim na tabela de Funcionários.
Ou seja, é preciso definir e separar corretamente os dados, pois, caso contrário, a busca será afetada.

Formas Normais

Para tratar esses problemas, o pesquisador Edgar Frank Codd desenvolveu três processos denominados Formas Normais.

Tipos de formas normais

  • Primeira forma normal (1FN): todos os valores de colunas de uma tabela devem ser atômicos:
    • deve se eliminar grupos repetidos em tabelas individuais;
    • uma tabela separada para cada conjunto de dados relacionados;
    • cada conjunto de dados precisa ser identificados com uma chave primária;
    • importante não ter uma tabela com vários dados semelhantes armazenados.
  • Segunda forma normal (2FN): não permite a dependência funcional de atributos que não sejam chaves primária.
  • Terceira forma normal (3FN): não ter campos que não dependam da chave. Exemplo: uma tabela de Cliente, onde possui o município de cada cliente. Para que seja possível existir uma listagem de municípios o ideal seria ter uma tabela de Município separada e fazer o vínculo com a tabela Cliente utilizando uma chave.

Outros tipos de formas normais

Existem, além das Formas mencionadas, outras Formas Normais que podem também ser aplicadas no desenvolvimento de um banco. Estas outras podem ser vistas nesse link, onde existe uma explicação mais detalhada de cada uma delas.

Bom pessoal, espero que tenham curtido esse post. Certamente é um conceito muito importante de saber e aplicar, pois na área em que trabalhamos qualquer e toda melhoria é essencial para o correto funcionamento de nossos projetos.

Até mais!

Renan Rodrigues Ramos Desenvolvedor

Sou desenvolvedor, amo desenvolvimento de software, músico e apaixonado por filmes e seriados.