Conceito

A normalização é um processo que visa a aplicação de regras a todas as entidades (tabelas) de um banco de dados, examinando seus atributos (colunas) e a relação entre as entidades. Ela tem como principal objetivo a organização de um bancos de dados, reduzindo a redundância e inconsistência de dados, facilitando a manipulação do banco e promovendo um ganho de performance. Atualmente, as formas normais mais conhecidas e utilizadas são a primeira, segunda e terceira formas normais, também conhecidas como 1FN, 2FN e 3FN. Isso não excluí as outras formas existentes, porém elas possuem uma menor aplicação e não serão estudadas neste projeto.

Metodologia

A metodologia para a normalização de dados varia de acordo com as regras da forma normal que será aplicada, entretanto, elas seguem uma ordem de aplicação, ou seja, para se aplicar as regras da terceira forma normal (3FN), é necessário que as regras da segunda (2FN) e da primeira (1FN) tenham sido cumpridas.

Primeira forma normal (1FN):

Para se dizer que uma tabela está na 1FN, os seus atributos devem ser atômicos (não é possível dividi-los em vários campos), ou seja, a tabela não pode possuir grupos repetidos e nem atributos com mais de um valor. Para que isso ocorra, alguns passos devem ser aplicados: é preciso identificar a chave primária da entidade (tabela), identificar a coluna que possui dados repetidos e removê-la, criar uma nova tabela com a chave primará para armazenar o dado repetido e, finalmente, criar uma relação entre a tabela principal e a tabela secundária.

Segunda forma normal (2FN):

Uma entidade (tabela) encontra-se na segunda forma normal (2FN) se, e somente se, além de encontrar-se na 1FN, cada atributo (coluna) não chave depender da chave primária completamente. Uma tabela não estará na 2FN se conter dependências funcionais parciais, ou seja, alguma coluna depende de apenas uma parte da chave primária. Essa é uma forma de garantir que não haverá redundância no banco de dados. Para deixar na segunda forma normal, é preciso identificar os atributos (colunas) que não são funcionalmente dependentes de toda a chave primária da tabela e, em seguida, remover essa coluna da tabela principal e criar uma nova tabela com esses dados.

Terceira forma normal (3FN):

Uma tabela está na terceira forma normal (3FN) quando, além de estar na 2 FN, toda coluna não chave depende diretamente de chave primária, ou seja, não existe dependência funcionais transitivas ou indiretas, todas as colunas não chave são mutuamente independentes. Para se alcançar essa forma normal, é necessário identificar os atributos (colunas) que são funcionalmente dependentes das outras colunas não chave e extraí-los para outra tabela.

Software

Um exemplo de software que pode ajudar na normalização do banco de dados é o Software Recognition Service da Snow, que agrega, limpa e normaliza todos os softwares identificados na rede antes de serem importados para o CMDB. Disponível em https://www.snowsoftware.com/int/products/software-recognition-service.

Diagrama de Blocos

Primeira forma normal (1FN)

A tabela acima não está na primeira forma normal pois a coluna "Telefones" contém mais de um valor para cada cliente. Desta forma, é necessário criar uma outra tabela para armazenar corretamente o telefone dos clientes, conforme imagem abaixo.


Segunda forma normal (2FN)

Já nesse caso, para a tabela obedecer as regras da 2FN, é preciso separar as tabelas em uma que contenha apenas as informações com os dados dos produtos e outra que possua apenas os dados referentes aos pedidos.


Terceira forma normal (3FN)

Como pode-se ver na tabela acima, a coluna referente ao "ValorTotal" é diretamente dependente da outra coluna não chave, a "ValorUnitario", o que não é permitido na 3FN. Desta forma, é só remover a coluna "ValorTotal" que ela estará na 3FN.

Interações com as tecnologias

A normalização de dados tem relação direta com o banco de dados, uma vez que as suas regras são aplicadas ao banco de dados para ajudar na organização e evitar redundâncias e inconsistência de dados. http://www.sourceinnovation.com.br/wiki/Projeto_Banco_de_Dados


Referências bibliográficas

BATTISTI, Julio. O Modelo Relacional de Dados - Parte 4. Disponível em:<https://www.juliobattisti.com.br/artigos/office/modelorelacional_p4.asp>. Acesso em: 8 de outubro de 2017.

BLOG DA TI. Normalização em Banco de Dados. Disponível em:<http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/>. Acesso em: 13 de outubro de 2017.

GONÇALVES, Mauri. Modelagem de Dados – Final (Normalização). Disponível em:<https://imasters.com.br/artigo/7020/banco-de-dados/modelagem-de-dados-final-normalizacao?trace=1519021197&source=single>. Acesso em: 10 de outubro de 2017.

HEUSER, C. A. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman, 2008. 282p. (Série Livros Didáticos Informática UFRGS, v. 4).

LUIS BLOG. Normalização de dados e as formas normais. Disponível em:<http://www.luis.blog.br/normalizacao-de-dados-e-as-formas-normais.aspx>. Acesso em: 10 de outubro de 2017.

MELO, Izabela Vanessa de Almeida. Normalização de Bancos de Dados Relacionais. Disponível em:<http://www.dsc.ufcg.edu.br/~pet/jornal/maio2011/materias/recapitulando.html>. Acesso em: 10 de outubro de 2017.

MIRANDA, William. Normalização de Dados. Disponível em:<http://aprendaplsql.com/modelagem-de-dados/normalizacao-banco-de-dados/>. Acesso em: 10 de outubro de 2017.

WIKIPÉDIA, Normalização de dados. Disponível em:<https://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados>. Acesso em: 10 de outubro de 2017.