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.