Os dados normalizados estão na terceira forma normal, utilizada em banco de dados relacional. Eles permitem um armazenamento consistente e acesso eficiente aos dados. Essa forma reduz a redundância de dados e as chances de inconsistência. Esse estilo de banco tem como foco inserir, alterar e deletar os dados.
Já os desnormalizados, que é com o que nós trabalhamos, têm foco na consulta. As consultas feitas em bancos de dados totalmente normalizados têm um mau desempenho, e para isso se usa a desnormalização: para melhorar o desempenho das consultas. Mas claro, com um custo: com ela não temos a garantia de consistências dos dados, além de termos um banco muito maior. O objetivo dos dados desnormalizados é entregar informação, é um sistema informacional, feito para ter uma consulta rápida. Vai ter redundância de dados, mas vai ser mais rápido.
Num modelo transacional, ou sistema operacional, você tem que ter integridade dos dados, eles não podem se repetir. Já no modelo dimensional, eles podem. Na verdade, eles devem.
Os mesmos dados se repetem em vários lugares, porque nesse caso ele é desenhado para melhorar o desempenho das consultas, porque o Data Warehouse é feito para consulta, enquanto o operacional é feito para transação.
A normalização foi proposta por Codd em 1970 como sendo parte do modelo relacional. Ela consiste em algumas técnicas utilizadas para eliminar valores não atômicos e redundância de dados. Essas redundâncias, como já discutimos, poderiam causar problemas como a necessidade de manutenção dos mesmos dados em diversas tabelas diferentes, o desperdício de espaço em disco e perda de performance na escrita no banco de dados.
Dessa forma, os objetivos da normalização podem ser sistematizados assim:
1. Reduzir a redundância de dados, organizando as tabelas de modo a facilitar a manutenção, a atualização de dados e a evolução do modelo; e
2. Garantir a integridade dos dados.
A normalização é frequentemente empregada nos bancos de dados relacionais, pois estes costumam servir a aplicações transacionais que lidam com um grande volume de inserções e atualizações de dados. Assim, as formas normais são os padrões e regras a respeito da organização das tabelas que fazem parte desse processo. Ao adotar um modelo lógico normalizado, o desenvolvedor facilita o gerenciamento dos dados e diminui a possibilidade da ocorrência de redundâncias.
Por outro lado, há um aumento na complexidade das consultas a serem realizadas nesse modelo, já que a normalização costuma implicar um aumento da quantidade de tabelas, o que por sua vez ocasiona consultas com mais junções entre tabelas. Em resumo, podemos dizer que a normalização diminui a quantidade de redundâncias, muitas vezes oferecendo uma melhor performance de escrita, mas prejudica a performance de leitura de dados.
As formas normais são tomadas de forma cumulativa, ou seja, para um banco de dados estar na terceira forma normal (3FN), ele também tem que estar na primeira forma normal (1FN) e na segunda (2FN), e assim sucessivamente. Codd inicialmente propôs essas três formas normais, que são as mais difundidas até hoje nos ambientes de bancos de dados. Assim, um banco de dados pode ser dito normalizado se atende à 3FN.
O modelo posteriormente se expandiu com contribuições de outros especialistas e hoje há uma série de formas de normalização propostas. Vamos ver as mais cobradas em concursos e mais presentes na literatura.
Normalização
É um processo formal, passo a passo, que examina os atributos de uma entidade, com objetivo de evitar anomalias observadas na inclusão, exclusão e alteração de linhas específicas, tem como objetivos a preservação da integridade dos dados, gerar estabilidade para o modelo, eliminar redundância. Dados bem definidos, íntegros no seu significado, consistentes, confiáveis, seguros e compartilhados fazem com que cada novo sistema defina apenas os dados que são do seu escopo e compartilhe os demais dados com outros sistemas presentes na organização.
Primeira Forma Normal: O objetivo é retirar os atributos ou grupos repetitivos. Representação de informações que se repetem para a mesma unidade, retratando ocorrências de um mesmo fato dentro de uma única entidade, vinculado a sua chave, onde para cada chave há a ocorrência de uma e somente uma informação de cada atributo. Desta forma, cada campo de uma tabela precisa conter somente um único tipo de dado, e cada parcela de dado deve ser armazenada em somente um lugar. Essa exigência é conhecida como atomicidade de dados.
Segunda Forma Normal: O objetivo é separar as dependências parciais. É preciso que as tabelas estejam na primeira forma normal e que cada uma contenha dados sobre uma e somente uma entidade, onde as colunas que dependem parcialmente da PK, devem formar uma nova tabela, algumas entidades, para serem identificadas e individualizadas, necessitam conter em sua chave mais de um atributo, formando, portanto, uma chave concatenada, verificar se a mesma possui chave concatenada e, se for o caso, constatar se todos os tributos não chaves não apresentam dependência parcial com a referida chave. Isto é, quando os atributos não-chaves dependem parcialmente de chave concatenada.
Terceira Forma Normal: O objetivo é eliminar dependências transitivas. Quando alguns atributos não são dependentes diretos da chave da entidade, mas sim por transitividade, através de outros residentes na mesma entidade referenciada. Isto é dependência indireta de um atributo com a chave da entidade, através de outro atributo não-chave, do qual é diretamente dependente. É preciso que as tabelas estejam na segunda forma normal e que todos os campos não-chaves dependam diretamente da chave primária, ou seja, não pode ter colunas determinadas por outras colunas. Os campos calculados devem ser eliminados, desta forma é verificado se algumas tabelas precisam ser divididas em partes, pois todas as tabelas devem conter informações sobre somente uma coisa.
QUESTÃO CERTA: Para que uma relação X esteja na segunda forma normal, é imperativo que não possua grupos de repetição. Dessa forma, ela deve conter apenas valores atômicos e todos os atributos não chaves devem ser dependentes da totalidade da chave primária.
1 FN-> Sem campos multivalorados.
2 FN-> Estar na 1 FN e e todos os atributos não chave devem depender de toda a chave primária.
3 FN-> Estar na 2 FN e sem dependências transitivas (ex.: valor total = preço x quantidade, atributos derivados)
“é imperativo que não possua grupos de repetição” = atributos multivalorados
QUESTÃO CERTA: Em um banco de dados relacional, um esquema de relação R está na: segunda forma normal, se cada atributo não primário de R não for parcialmente dependente de nenhuma chave de R.
QUESTÃO CERTA: Minimização ou eliminação da redundância e minimização das anomalias de atualização são propriedades desejadas com a normalização.
QUESTÃO CERTA: Em bancos de dados relacionais, uma prática comum é normalizar suas tabelas até a terceira forma normal ou até a forma normal de Boyce-Codd. Na prática, normalizar uma tabela, por exemplo, da primeira forma normal até a terceira forma normal significa: fragmentar ou dividir os atributos dessa tabela em tabelas menores (com menor número de atributos).
QUESTÃO CERTA: Para eliminar a condição de existência de valores não atômicos em uma coluna de tabela relacional: deve ser aplicada, no mínimo: a primeira Forma Normal.
QUESTÃO CERTA: Sobre a normalização relacionada a banco de dados, é correto afirmar que: O objetivo é gerar um conjunto de esquemas de relação que permita armazenar informações sem redundância, bem como recuperar informações facilmente, ao mesmo tempo. A técnica é projetar esquemas que estejam em uma forma normal apropriada.
QUESTÃO CERTA: Na elaboração de um projeto de banco de dados, é função da normalização evitar: a repetição de informações.
QUESTÃO ERRADA: Embora a normalização seja um conjunto de etapas que possibilita o reagrupamento de informações, ela não é destinada a eliminar redundâncias de dados que possam existir nos arquivos.
QUESTÃO CERTA: A Entidade está na 3FN se nenhum de seus atributos possui dependência transitiva em relação a outro atributo da Entidade que não participa da Chave Primária.
QUESTÃO CERTA: Referente a normalização de dados, complete correta e respectivamente a lacuna da frase a seguir: “Uma tabela está na ______, se e somente se, todos os valores de colunas em uma tabela forem atômicos”: 1FN
Primeira Forma Normal (ou 1FN) requer que todos os valores de colunas em uma tabela sejam atômicos (exemplo: um número é um átomo, enquanto uma lista ou um conjunto não o são). A normalização para a primeira forma normal elimina grupos repetidos, pondo-os cada um em uma tabela separada, conectando-os com uma chave primária ou estrangeira;
Segunda Forma Normal (ou 2FN) requer que não haja dependência funcional não-trivial de um atributo que não seja a chave, em parte da chave candidata;
Terceira Forma Normal (ou 3FN) requer não haver dependências funcionais não-triviais de atributos que não sejam chave, em qualquer coisa exceto um superconjunto de uma chave candidata;
Forma Normal de Boyce-Codd (ou BCNF) requer que não exista nenhuma dependência funcional não-trivial de atributos em algo mais do que um superconjunto de uma chave candidata. Neste estágio, todos os atributos são dependentes de uma chave, de uma chave inteira e de nada mais que uma chave (excluindo dependências triviais, como A → A);
Quarta Forma Normal (ou 4FN) requer que não exista nenhuma dependência multi-valorada não-trivial de conjuntos de atributo em algo mais de que um superconjunto de uma chave candidata;
Quinta Forma Normal (ou 5FN ou PJ/NF) requer que não exista dependências de joins (associações) não triviais que não venham de restrições chave;
Domain-Key Normal Form (ou DK/NF) requer que todas as restrições sigam os domínios e restrições chave.
QUESTÃO ERRADA: A forma normal de BCNF (Boyce-Codd) está relacionada com a existência de dependência funcional entre os atributos primários e os atributos que compõem uma chave estrangeira.
Terceira Forma Normal (ou 3FN) requer não haver dependências funcionais não-triviais de atributos que não sejam chave, em qualquer coisa exceto um superconjunto de uma chave candidata;
QUESTÃO ERRADA: A forma normal de Boyce-Codd é mais simples, porém mais rígida do que a 2FN. Assim, toda relação na forma normal de Boyce-Codd também está na 2FN, porém uma relação na 2FN não está, necessariamente, na forma normal de Boyce-Codd.
“A Forma Normal Boyce-Codd (FNBC) foi proposta como uma forma mais simples da 3FN, mas descobriu-se que ela era mais rigorosa.”
Fonte: Navathe, 6ed, pág 355
Se a Forma Normal Boyce-Codd é mais rigorosa que a 3FN, automaticamente pé mais rígida que a 2FN (que vem antes da 3FN).
QUESTÃO CERTA: Para eliminar a condição de existência de valores não atômicos em uma coluna de tabela relacional: deve ser aplicada, no mínimo, a primeira Forma Normal.
QUESTÃO CERTA: Na normalização de dados, as formas normais que tentam minimizar o número de campos envolvidos em uma chave composta são: 4FN e 5FN.
QUESTÃO CERTA: Qualquer conjunto de tabelas não normalizadas pode ser reduzido a um conjunto de tabelas FNBC (forma normal boyce codd).
No caso apresentado, pode-se normalmente fazer a normalização das tabelas até a FNBC. Lembrando que para estar na FNBC tem que estar na 3º forma normal que por sua vez está na 2º e assim por diante.
QUESTÃO CERTA: Toda relação que atenda à forma normal de Boyce Codd está na segunda forma normal.
Como uma tabela na FN Boyce-Codd está também na 3FN, estará, obrigatoriamente, em 2FN.
QUESTÃO ERRADA: Em normalização, a primeira forma normal é caracterizada por uma tabela com a existência obrigatória de uma chave primária e uma chave estrangeira.
Uma relação estará na primeira forma normal 1FN, se não houver grupo de dados repetidos, isto é, se todos os valores forem únicos. Em outras palavras podemos definir que a primeira forma normal não admite repetições ou campos que tenha mais que um valor. Ou seja, é caracterizada por uma tabela com a existência obrigatória de uma CHAVE PRIMÁRIA.
Uma tabela está na 1FN somente se todos os seus atributos são atômicos; ou seja, seus atributos compostos devem ser desmembrados em suas múltiplas partes, cada uma virando um novo atributo, e os atributos multivalorados representados em uma tabela auxiliar ligada à principal que possua uma linha por registro.
1FN: Não conter valores aninhados. Possuir valores atômicos;
2FN: Não conter dependências parciais;
3FN: Não conter dependência transitiva;
4FN: Não conter valores multivalorados;
5FN: Não conter dependência funcional de junção
QUESTÃO ERRADA: Uma tabela estará na segunda forma normal (2FN) quando, além de estar na terceira forma normal (3FN), ela contiver dependências funcionais parciais.
Temos dois erros aqui. O primeiro é que as formas normais são cumulativas da menor para a maior, ou seja, para uma tabela estar na 2FN ela também deve estar na 1FN, para estar na 3FN ela necessariamente estará na 2FN e assim sucessivamente. Assim, uma tabela pode estar na 2FN, mas não estar na 3FN, a recíproca é que não é verdadeira. O segundo erro é dizer que a tabela deve apresentar dependências funcionais parciais. Na verdade, a dependência funcional em relação à chave primária deve ser completa, ou seja, todos os atributos não chave devem depender da chave primária inteira.
QUESTÃO ERRADA: A passagem à terceira forma normal (3FN) tem como objetivo principal gerar o modelo lógico de dados; por isso, ela não visa eliminar redundância de dados, como ocorre com as demais formas normais.
QUESTÃO CERTA: Considerando Normalização de banco de dados, dada a Terceira Forma Normal, assinale a alternativa correta: a tabela não pode conter atributos que sejam resultados de algum cálculo de outro atributo.
“Uma relação R está na 3FN se ela estiver na 2FN e cada atributo não-chave de R não possuir dependência transitiva, para cada chave candidata de R. Todos os atributos dessa tabela devem ser independentes uns dos outros, ao mesmo tempo que devem ser dependentes exclusivamente da chave primária da tabela.”
QUESTÃO CERTA: uma relação R está na 3FN (terceira forma normal) quando todos as suas colunas “não-chave” são dependentes não transitivos da chave primária, isto é, cada coluna é funcionalmente dependente apenas das colunas componentes da chave primária e todas as suas colunas “não-chave” são independentes entre si.
Segundo Navathe, um esquema de relação R está na 3FN se cada atribuo não principal de R for total e funcionalmente dependente de cada chave de R e for dependente não transitivamente de cada chave de R.
QUESTÃO CERTA: De acordo com a normalização de entidades em bancos de dados relacionais, a entidade cujos atributos não chave independem de outro atributo não chave está na: terceira forma normal (3FN).