Fontes:
https://docs.oracle.com/database/121/SQLRF/intro001.htm#SQLRF50932
Blog com o objetivo de aprender SQL Oracle, abordando temas simples e gradualmente aumentando a complexidade, servindo como um guia para estudo e certificações.
Um bom banco de dados, passa antes de tudo por um bom desenvolvimento, para isso deve ser basear nas regras de normalização. A normalização assim como o modelo de banco de dados relacionais, teve seu conceito introduzido por E.F. Codd durante os anos 70. A normalização também é conhecida como Normal Forms (Formas Normais), visa manter um banco de dados otimizado para reduzir redundâncias e dependências.
Quando se normaliza um banco de dados, tem como objetivo flexibilizar a estrutura do banco de dados, assegura que os atributos estão nas tabelas corretas, reduzir a redundância dos dados, aumentar a efetividade dos programadores, diminuir custos de manutenção das aplicações e maximizar a efetividade da estrutura dos dados.
Basicamente, uma tabela na 1NF não consta dados repetidos, então, para atender a primeira forma normal devemos considerar que em uma tabela cada coluna seja única.
Exemplo:
Na imagem acima vemos que a tabela 'Registro' possui 3 colunas para o mesmo tipo de dados, o que gera repetição.
Para aplicar a 1NF, é criada uma nova tabela 'Telefone', com as informações referente aos números de telefone e tipo do número, cada registro possui um ID único, que é disponibilizado na tabela 'Registro' por meio de chave estrangeira Foreigner Key.
Como premissa para a 2NF, a tabela já deve estar normalizada na 1NF, sabendo disso, o conceito da 2NF é que nenhuma outra coluna da tabela deve ser dependente de parte do valor da chave primária. Para exemplificar, uma tabela que possui uma chave primária composta, ou seja, 2 colunas ou mais formam a chave primária, uma nova coluna não pode depender do valor que consta apenas em uma coluna que forma a chave primária, isso busca reduzir a redundância de dados.
Exemplo.
Como premissa para a 3NF, a tabela já deve atender as normas anteriores. A 3NF consiste em que uma tabela, não possua uma coluna que dependa de outra coluna que não seja uma coluna chave, para normalizá-la deve-se remover essa coluna para outra tabela.
Exemplo:
Fontes:
https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.ddi.doc/ids_ddi_066.htm
https://www.w3schools.in/dbms/database-normalization/