Conceito

  • A normalização de dados é uma série de passos que se seguem no projeto de um banco de dados e que permitem um armazenamento consistente e um eficiente acesso aos dados em modelos relacionais
  • Esses passos reduzem a redundância de dados e as chances deles 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 criam problemas de manutenção
  • Se os dados que existem em mais de um local devem ser alterados, isto deverá acontecer exatamente da mesma maneira em todos eles
  • 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 não espalhados em vários outros locais.


Prós e contras

Prós


  1. Padronização de Bancos de Dados
  2. Em um projeto, se o Engenheiro ou responsável normalizar o seu projeto, o programador não terá dificuldades em codificar o projeto
  3. Oferece fácil recuperação de informações
  4. Garante relações sem redundância desnecessária


Contras


  1. 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 baixo desempenho
  2. Por se tratar de um método criado a décadas, atendeu bem a questões comuns mas como nos dias de hoje temos novas demandas como armazenamento de mídia (áudio, vídeo, imagens), buscas inteligentes e também de conteúdos não formatados (logs, mensagens, textos diversos) novas tecnologias de Banco de Dados foram sendo desenvolvidas


Chave Primária

  • As tabelas relacionam-se umas as outras através de chaves. Uma chave é um conjunto de um ou mais atributos que determinam a unicidade de cada registro.
  • A unicidade dos registros, determinada por sua chave, também é fundamental para a criação dos índices.
  • Temos dois tipos de chaves:
    • Chave primária: (PK - Primary Key) é a chave que identifica cada registro dando-lhe unicidade. A chave primária nunca se repetirá.
    • Chave Estrangeira: (FK - Foreign Key) é a chave formada através de um relacionamento com a chave primária de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja composta na origem, a chave estrangeira também o será.


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.


  • Entidade Cliente (Sem normalização)
Exemplo
  • CPF
  • RG
  • DataNascimento
  • Nome
  • Dependentes




  1. O cliente pode ter mais de um CPF? Não => Por isso ele é chave primária
  2. O cliente pode ter mais de um RG? Não
  3. O cliente pode ter mais de um nome? Não
  4. O cliente pode ter mais de uma data de Nascimento? Não
  5. O cliente pode ter vários dependentes? SIM

Isso torna o atributo "Dependente" uma nova entidade!

  • Entidade Cliente (Com normalização)


Exemplo
  • CPF
  • RG
  • DataNascimento
  • Nome


  • Entidade Dependentes
  • CPF
  • NomeDependente




Outros exemplos


Sem avaliar 1a. Forma Normal

  • Aluno
    • Matricula
    • Nome
    • DataNascimento
    • Cpf
    • Identidade
    • Sexo
    • EstadoCivil
    • Endereço
    • Telefones


Após avaliar 1a. Forma Normal

  • Aluno
    • Matricula
    • Nome
    • DataNascimento
    • Cpf
    • Identidade
    • Sexo
    • EstadoCivil
    • Endereço


  • Telefones
    • Matricula
    • NroTelefone
    • Operadora




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
  • Nro do contrato
  • RG
  • Nome
  • DataVencContrato





  1. Se trocarmos o atributo nome, o cliente será descaracterizado? Sim
  2. Se trocarmos o atributo os CPF e RG o cliente será descaracterizado? Sim
  3. Se trocarmos o atributo NrodoContato, o cliente será descaracterizado? Não
  4. Se trocarmos a DataVencContrato, o cliente é descaracterizado? Não

Então o atributo Contrato é uma Entidade!




Sem avaliar 2a. Forma Normal

  • Aluno
    • Matricula
    • Nome
    • DataNascimento
    • Cpf
    • Identidade
    • Sexo
    • EstadoCivil
    • Endereço
    • Curso
    • Disciplinas


Exemplos


Após avaliar 2a. Forma Normal

  • Aluno
    • Matricula
    • Nome
    • DataNascimento
    • Cpf
    • Identidade
    • Sexo
    • EstadoCivil
    • Endereço
    • CodCurso


  • Cursos
    • CodCurso
    • NomeCurso
    • DataInicio
    • Area
    • Diretor


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





  1. O nome da cidade depende do CPF? Não

Então o atributo Cidade é uma Entidade



Referências