| Linha 28: | Linha 28: | ||
== | == Primeira Forma Normal (1FN) == | ||
; Definição: | ; Definição: | ||
Edição das 02h59min de 8 de dezembro de 2013
Conceito
- 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. Pode-se dizer também que é um conjunto de limitações impostas a uma estrutura de dados para que a mesma fique mais concisa e sem falhas estruturais.
- Dados redundantes desperdiçam espaço em disco e cria problemas de manutenção. Se os dados que existem em mais de um local devem ser alterados, os dados devem ser alterados exatamente da mesma maneira em todos os locais. Uma alteração de endereço de cliente é muito mais fácil de implementar se esses dados são armazenados somente na tabela clientes e onde mais no banco de dados.
Prós e contras
Prós
Contras
No entanto, muitos SGBDs(Sistemas de Gerenciamento de Dados) relacionais não têm separação suficiente entre o projeto lógico da base de dados e a implementação física do banco de dados, e isso tem como consequência que as consultas feitas a um banco de dados totalmente normalizado têm um mau desempenho. Nestes casos, usa-se por vezes a desnormalização para melhorar o desempenho, com o custo de menores garantias de consistência.
Chave Primária
Dependência funcional
Formas Normais
Diz-se que uma tabela num banco de dados relacional está numa certa forma normal se satisfaz certas condições. O trabalho original de Edgar F. Codd definiu três dessas formas, mas existem hoje outras formas normais geralmente aceitas. Damos aqui uma curta panorâmica informal das mais comuns. Cada forma normal listada abaixo representa uma condição mais forte que a precede na lista. Para a maioria dos efeitos práticos, considera-se que as bases de dados estão normalizadas se aderirem à terceira forma normal.
Primeira Forma Normal (1FN)
- Definição
Uma tabela está na 1FN, se e somente se, não possuir atributos multivalorados.
- A primeira forma normal diz que atributos de uma entidade que tem características de armazenamento de vários valores, devem gerar uma nova entidade (ou ser extraído para outra entidade já existente) de dados relacionada a entidade origem. Ou seja, separar grupo repetitivo.
- Exemplo
- Cliente
- CPF
- RG
- Nomes
- Dependentes
- O cliente pode ter mais de um CPF? Não
- O cliente pode ter mais de um RG? Não
- O cliente pode ter mais de um nome? Não
- O cliente pode ter mais de um Dependente? SIM
Isso torna o atributo "Dependete" uma nova entidade!
Segunda Forma Normal (2FN)
- Definição
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.
- A segunda forma normal fala sobre a dependência relativa de dados. Em termos claros pode-se dizer que todo atributo de uma entidade que não depender exclusivamente da chave primária, deve gerar uma nova entidade.
- Exemplo
- Associado
- CPF
- N.o do contrato
- RG
- Nome
- Data_Venc_Contrato
- Trocando o atributo nome o cliente será descaracterizado? Sim
- Trocando o atributo os CPF e RG o cliente será descaracterizado? Sim
- Trocando o atributo N.o do contato o cliente srá descaracterizado? Sim
- Trocando a Data_venc_contrato o cliente é descaracteriza? Não
Então o atributo Contrato é uma Entidade!
Terceira Forma Normal (3FN)
- Definição
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.
- A terceira forma normal utiliza o principio de transitividade, e diz que todo atributo que dependem não transitivamente da chave primária gera uma entidade. Basicamente perguntar se o tributo depende ou não da chave do qual pertence.
- Exemplo
- Cliente
- CPF
- RG
- Nome
- UF
- Nome_Cidade
- Código_Cidade
- O nome da cidade depende do CPF? Não
Então o atributo Cidade é uma Entidade
--Hernández (discussão) 21h54min de 7 de dezembro de 2013 (BRST)