Normalização de um Banco de Dados

Símbolo de um Banco de Dados correto
Normalização é o processo de estruturação do esquema de um Banco de Dados Relacional que irá remover a maioria das ambiguidades. Os estágios da normalização referem-se como formas normais que vão desde a menos restritiva (Primeira Forma Normal) para a mais restritiva (Quinta Forma Normal). Geralmente, os Arquitetos de Banco de Dados não atenta para implementar nada além da Terceira Forma Normal, a Forma Normal de Boyce-Codd.A normalização é considerada por alguns profissionais de TI como um luxo que somente os estudantes tem tempo para fazer. De qualquer forma, sempre é bom entender os conceitos básicos deste tema, que não é complicado, e que poderá drásticamente melhorar o desempenho do seu BD e seu gerenciamento.

Neste post, irei demonstrar as Formas Normais (FN) e explicar cada uma delas de uma forma mais simples possível.

Objetivos

Nada mais é que o processo de organizar de forma eficiente os dados em seu BD. Existem dois pontos chave neste processo: eliminar a redundância de dados e assegurar que as dependências fazem realmente sentido. Se você estiver com um BD com estes problemas, provavelmente você estará utilizando mais espaço do que deveria.

Devo normalizar meu BD?

A normalização não é algo obrigatório, mas é sempre uma boa idéia, já que isto irá beneficiar o desempenho e organização dos dados. Você deve tentar seguir os princípios da normalização quando parecer razoável fazer isto. A intenção aqui é que você não deve deixar um fanatismo quase religioso sobre a normalização impedi-lo de fazer o seu trabalho da melhor maneira possível.

Quando você optar por fazer pequenas variações das regras de normalização, você precisará ser mais cauteloso em forçar o BD quanto a sua integridade. Se você armazenar dados redundantes, crie algumas triggers e outros controles para garantir que as informações estejam consistentes.

Primeira Forma Normal (1FN)

Esta regra define as regras de organização básica de um banco de dados, que são:

  1. Eliminar as colunas duplicadas de uma mesma tabela;
  2. Criar tabelas separadas para cada grupo de dados relacionados e identificar cada linha com uma ou mais colunas como únicas (IDs, Códigos, etc). Ou seja, todos os atributos da relação estiverem baseados em um domínio simples, não contendo grupos ou valores repetidos;

Em resumo, esta 1FN faz com que cada atributo (coluna) tenha uma relação atômica (trabalhar de forma indivisível), ou seja, cada coluna deve ter apenas um valor e cada registro tenha as mesmas colunas.

Segunda Forma Normal (2FN)

Nesta forma, são definidas as regras para remover dados duplicados:

  1. Estar na 1FN;
  2. Cada atributo não-chave for dependente da chave primária inteira, isto é, cada atributo não-chave não poderá ser dependente de apenas parte da chave. Ou seja, todos os seus atributos que não façam parte de alguma chave candidata devem ser determinados unicamente por qualquer chave candidata da tabela;

Terceira Forma Normal (3FN)

Normalmente, quando alguns desenvolvedores ou arquitetos de BD normalizam seu banco, chegam até esta forma e para por aqui mesmo. Neste passo, iremos um pouco mais a fundo:

  1. Estar na 2FN;
  2. Eliminar as colunas que não possuem dependência funcional com as chaves primárias. todos os atributos que não são chave sejam mutuamente independentes, isto é, que não existam funções que definam um ao outro. Portanto, sempre a chave por inteiro deve definir toda a tabela;

Terceira Forma Normal de Boyce-Codd (3.5 FNBC)

Esta FN é chamada de 3.5, pois Boyce e Codd adicionaram mais um requisito a 3FN:

  1. Estar na 3FN (comum);
  2. Não existir dependência funcional dentro da chave primária;

Quarta Forma Normal (4FN)

Para chegar a este passo, o BD precisa:

  1. Estar na 3FN;
  2. Não existir dependências multi-valoradas;
Dependências multi-valoradas ocorrerem quando a presença de uma ou mais linhas em uma tabela implica a presença de uma ou mais outras linhas na mesma tabela.

Quinta Forma Normal (5FN)

Esta última FN é um caso mais raro, que ocorrem na modelagem de dados, que são os relacionamentos múltiplos (ternários, quaternários e n-ários).

Para finalizarmos as FNs:

  1. Estar na 4FN;
  2. Quando o conteúdo deste mesmo registro não puder ser reconstruído (junção) a partir de outros registros menores, extraídos deste registro principal.

 

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

3 Responses to “Normalização de um Banco de Dados”

  1. Oscar disse:

    Diogo, boa tarde.

    Sua explicação é muito boa, só acho que faltou colocar um exemplo gráfico para cada FN. Assim o entendimento ficaria mais fácil.

    Abraços.

  2. augusto disse:

    Obrigado pela sua explicação épica. Me ajudou muito nesse meu processo de aprendizado sobre MRN. Só faltou colocar alguns exemplos em cada FN para ficar mais claro.
    Abraços…

  3. Maya disse:

    Diogo,sua explicação é objetiva.
    Parabéns ….
    Você informar sobre seta forma normal.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *