Normalização de dados

A normalização de dados é uma série de passos que se seguem no projeto de um banco de dados, que permitem um armazenamento consistente e um eficiente acesso aos dados em bancos de dados relacionais. Esses passos reduzem a redundância de dados e as chances dos dados se tornarem inconsistentes.

Defini três dessas formas, mas existem hoje outras formas normais geralmente aceitas.

Forma Normal

Para a maioria dos efeitos práticos, considera-se que as bases de dados estão normalizadas se aderirem à terceira forma normal.

1FN

Primeira Forma Normal (ou 1FN) requer que todos os valores de colunas em uma tabela sejam atômicos (ex., um número é um átomo, enquanto uma lista ou um conjunto não o são). A normalização para a primeira forma normal elimina grupos repetidos, pondo-os cada um em uma tabela separada, conectando-os com uma chave primária ou estrangeira.

Exemplo

{COD_PEDIDO | CLIENTE | VENDEDOR | ATENDENTE | PRODUTO | QUANT | VALOR}
{00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" | "TENIS " | "1" | "50.00"}
{00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" | "SANDALIA" | "2" | "80.00"}
{00001 | "DOUGLAS TYBEL"| "MARCO"| "JOAO" | "CARTEIRA" | "1" | "35.00"}

Podemos ter outro cliente para o pedido 00001 ? = Não. Podemos ter apenas 1 cliente por pedido, sendo assim este atributo é atômico único para 1 pedido.

Podemos ter outro vendedor para o pedido 00001 ? = Não. Podemos ter apenas 1 vendedor por pedido.

Podemos ter outro produto para o pedido 00001 ? = Sim. Podemos ter vários produtos para um pedido, sendo assim, os campos aninhados devem ser extraídos para outra tabela.

2FN

Uma relação está na 2FN se, e somente se, estiver na 1FN e 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.

No caso de tabelas com chave primária composta, se um atributo depende apenas de uma parte da chave primária, então esse atributo deve ser colocado em outra tabela.

3FN

Uma relação R está na 3FN, se estiver na 2FN e cada atributo não-chave de R não possuir dependência transitiva, para cada chave candidata de R.

Relação não normalizada: 
Livros(nrol, (autor), título, (assunto), editora, cid_edit, ano_public)
1FN: 
Livros(nrol, autor, assunto, título, editora, cid_edit, ano_public)
2FN: 
Livros(nrol, título, editora, cid_edit, ano_public)
AutAssLiv(nrol, autor, assunto)
3FN: 
Livros(nrol, título, editora, ano_public)
Editoras(editora, cid-edit)
AutAssLiv(nrol, autor, assunto)

Normalização de dados

By walternascimento

Normalização de dados

  • 230