Normalização
No entanto, muitos SGBDs 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.
Objetivos de normalização[editar | editar código-fonte]
Um objetivo básico da primeira forma normal, definida por Codd em 1970, era permitir dados serem questionados e manipulados usando uma "sub-linguagem de dados universal" atrelada à lógica de primeira ordem. Questionando e manipulando dados em uma estrutura de dados não normalizada, como a seguinte representação não-1NF de transações de clientes de cartão de crédito, envolve mais complexidade que é realmente necessário:
Cliente Transação
_Tr. ID____Date____________Amt.
João
12890 14 de outubro de 2003 -87
12904 15 de outubro de 2003 -50
Wilson
12898 14 de outubro de 2003 -21
Márcio
12907 15 de outubro de 2003 -18
14920 20 de novembro de 2003 -70
15003 27 de novembro de 2003 -60
Para cada cliente corresponde um grupo repetitivo de transações. A análise automatizada de transação envolve dois estágios:
Desempacotar um ou mais grupos de clientes de transações permitindo transações individuais serem agrupadas para exame, e
Derivar o resultado de uma consulta em resultados do primeiro estágio.
Por exemplo, para encontrar a soma monetária de todas as transações que ocorreram em outubro de 2003 para todos os clientes, o sistema necessitaria saber primeiro que precisa desempacotar o grupo de transações para cada