hi
<b>Normalização de bancos de dados</b> é uma técnica para projetar tabelas de bancos de dados relacionais com o objetivo de minimizar a duplicação de informações e, dessa forma, proteger o banco de dados contra certos tipos de problemas lógicos ou estruturais. Por exemplo, quando múltiplas instâncias da mesma informação ocorrem em uma tabela, existe a possibilidade de que essas instâncias não se mantenham consistentes quando os dados dentro da tabela são atualizados, levando a uma perda de integridade de dados. Uma tabela que está suficientemente normalizada é menos vulnerável a problemas desse tipo, porque sua estrutura reflete as suposições básicas sobre quando múltiplas instâncias da mesma informação devem ser representadas por uma única instância apenas.
Graus mais altos de normalização tipicamente envolvem mais tabelas e criam a necessidade de um maior número de junções, o que pode reduzir o desempenho. Portanto, as tabelas mais normalizadas são tipicamente usadas em aplicações de bancos de dados que envolvem muitas transações isoladas (por exemplo, um sistema de caixa eletrônico), enquanto as tabelas menos normalizadas tendem a ser usadas em aplicações de bancos de dados que não precisam mapear relações complexas entre entidades de dados e atributos de dados (por exemplo, um aplicativo de relatórios ou um aplicativo de busca de texto completo).
A teoria de bancos de dados descreve o grau de normalização de uma tabela em termos de formas normais de sucessivos graus de rigorosidade. Uma tabela em terceira forma normal (3NF), por exemplo, está consequentemente também em segunda forma normal (2NF); mas nem sempre o contrário é verdadeiro.
Embora as formas normais sejam frequentemente definidas informalmente em termos das características das tabelas, as definições rigorosas das formas normais referem-se às características dos construtos matemáticos conhecidos como relações. Sempre que a informação é representada de forma relacional, é significativo considerar em que medida a representação está normalizada.
<b>Formas normais</b>
As formas normais (abreviado NF) da teoria de bancos de dados relacionais fornecem critérios para determinar o grau de vulnerabilidade de uma tabela a inconsistências lógicas e anomalias. Quanto maior a forma normal aplicável a uma tabela, menos vulnerável ela será a tais inconsistências e anomalias. Cada tabela tem uma "forma normal mais alta" (HNF): por definição, uma tabela sempre atende aos requisitos de sua HNF e de todas as formas normais inferiores à sua HNF; também por definição, uma tabela não atende aos requisitos de nenhuma forma normal superior à sua HNF.
As formas normais são aplicáveis a tabelas individuais; dizer que um banco de dados inteiro está na forma normal n significa que todas as suas tabelas estão na forma normal n.
Os recém-chegados ao design de bancos de dados às vezes presumem que a normalização procede de maneira iterativa, ou seja, um design de 1NF é normalizado primeiro para 2NF, depois para 3NF, e assim por diante. Esta não é uma descrição precisa de como a normalização geralmente funciona. É provável que uma tabela projetada de maneira sensata esteja em 3NF na primeira tentativa; além disso, se estiver em 3NF, é muito provável que tenha um HNF de 5NF. Alcançar as formas normais "superiores" (acima de 3NF) geralmente não requer um esforço adicional do designer, porque as tabelas em 3NF geralmente não precisam de modificações para atender aos requisitos dessas formas normais superiores.
Edgar F. Codd originalmente definiu as três primeiras formas normais (1NF, 2NF e 3NF). Estas formas normais foram resumidas como exigindo que todos os atributos não chave dependam "da chave, toda a chave e nada mais que a chave". As formas normais quarta e quinta (4NF e 5NF) tratam especificamente da representação de relações muitos para muitos e de um para muitos entre atributos. A sexta forma normal (6NF) incorpora considerações relevantes para bancos de dados temporais.
<b>Primeira forma normal</b>
Artigo principal: Primeira forma normal
Uma tabela está em primeira forma normal (1NF) se e somente se ela representa fielmente uma relação. Uma vez que as tabelas de bancos de dados encarnam uma forma semelhante a uma relação, a característica definidora de uma tabela em primeira forma normal é que ela não permite nulos nem linhas duplicadas. Em poucas palavras, uma tabela com uma chave única e sem colunas nulas está em 1NF.
Há uma confusão derivada da afirmação comum de que uma tabela em 1NF não pode ter grupos repetidos. Embora essa afirmação em si seja axiomática, os especialistas discordam sobre o que qualifica como um "grupo repetido", portanto, a definição precisa de 1NF é objeto de certa controvérsia. No entanto, essa incerteza teórica se aplica às relações, não às tabelas. As manifestações das tabelas são intrinsecamente livres de variáveis de grupos repetidos porque estão estruturalmente limitadas ao mesmo número de colunas em todas as linhas.
Consulte o artigo sobre a primeira forma normal para obter uma discussão mais detalhada das sutilezas da 1NF.