Sobes.tech
Middle

O que você sabe sobre formas normais em bancos de dados?

sobes.tech IA

Resposta da IA

As formas normais (FN) são um conjunto de regras e recomendações para projetar a estrutura de uma base de dados relacional, visando minimizar a redundância de dados e prevenir anomalias ao inserir, atualizar e eliminar.

Formas normais principais:

  • Primeira forma normal (1FN):

    • Cada atributo (coluna) deve conter valores atômicos (indivisíveis).
    • Ausência de grupos repetitivos de atributos.
    • Cada linha deve ser única (presença de chave primária).
  • Segunda forma normal (2FN):

    • Está em 1FN.
    • Cada atributo não-chave deve depender completamente de toda a chave primária (se a chave primária for composta).
  • Terceira forma normal (3FN):

    • Está em 2FN.
    • Ausência de dependências transitivas de atributos não-chave a partir da chave primária (um atributo não-chave não deve depender de outro atributo não-chave).
  • Forma de Boyce-Codd (FBC/BCNF):

    • Versão mais estrita de 3FN.
    • Cada dependência não trivial $X \to Y$ deve ter $X$ como superchave.
  • Quarta forma normal (4FN):

    • Está em FBCNF.
    • Ausência de dependências multivaloradas.
  • Quinta forma normal (5FN):

    • Está em 4FN.
    • Ausência de dependências de junção.

Objetivos da normalização:

  • Reduzir a redundância de dados.
  • Prevenir anomalias (inserções, atualizações, eliminações).
  • Garantir a integridade dos dados.
  • Simplificar a estrutura da base de dados.

Exemplo:

Tabela com redundância (não em 1FN):

OrderID Produto Preço
1 Laptop, Rato 1000, 20
2 Teclado 50

Tabela normalizada (em 1FN e acima):

Tabela "Pedidos":

OrderID
1
2

Tabela "Linhas de pedido":

LinhaID OrderID Produto Preço
1 1 Laptop 1000
2 1 Rato 20
3 2 Teclado 50

A normalização é uma etapa importante no projeto, mas a normalização excessiva pode levar ao aumento do número de junções nas consultas, o que pode afetar negativamente o desempenho. A escolha do nível ótimo de normalização depende dos requisitos específicos e dos compromissos. A desnormalização às vezes é usada para otimizar o desempenho em certos cenários, violando conscientemente as regras das formas normais.