Modelagem de dados: Formas Normais


A Normalização de Dados foi desenvolvida por Ted Codd e é baseada na teoria de conjuntos.

Seu objetivo é a organização de um conjunto de dados em entidades (ou tabelas), garantindo a não redundância de dados, a obtenção de tabelas estáveis, evolutíveis e consistentes.

No caso da modelagem de dados para um sistema OLTP*, é importante evitarmos a replicação de informações na base dados. Além de ocupar espaço desnecessário, também podemos dificultar a atualização do dados, caso seja necessário acessar mais uma tabela para armazená-lo.

Por outro lado, na modelagem OLAP*, a replicação de informações em diversas tabelas do banco de dados é aceitável, e quase sempre, desejável.

PRIMEIRA FORMA NORMAL - 1FN

Uma entidade está na Primeira Forma Normal se não houver grupo de dados repetidos, ou seja, se todos os valores forem únicos.

A Primeira Forma Normal não admite repetições ou campos que tenha mais que um valor.

Para aplicar a 1FN, devemos:

  • Identificar a chave primária da entidade;

  • Identificar o grupo repetitivo e removê-lo da entidade;

  • Criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo.

A imagem ao lado traz informações sobre PESSOAS.

Observe que os atributos Código e Nome apresentam apenas uma informação. Porém, o atributo endereço informa mais do que o nome da rua.

Para ajustar esta entidade na Primeira Forma Normal, devemos tratar o atributo Endereço.

Agora temos a entidade PESSOA normalizada na Primeira Forma Normal!

A Primeira Forma Normal é pouco usada nos dias de hoje, já que o conceito de BD relacional nos leva a, naturalmente, definir uma entidade diretamente na 1FN.

SEGUNDA FORMA NORMAL - 2FN

Uma Entidade está na Segunda Forma Normal se ela estiver na 1FN, e todos os atributos não chave forem totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela).

Observe a entidade PEDIDO ao lado.

Se o nome do produto já existe na tabela produtos, então não é necessário que ele exista na tabela de produtos. Além disso, o nome do produto não depende do código do pedido, mas do código do produto.

A segunda forma normal evita que valores fiquem em redundância no banco de dados.

Para aplicar a 2FN, devemos:

  • Identificar os atributos que não são funcionalmente dependentes de toda a chave primária.

  • Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.

A chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes.

Agora, temos a entidade PRODUTO, que armazena o código e o nome do produto.

E temos a entidade PEDIDO, que armazena o código do pedido, o código do produto, a quantidade comprada, o valor unitário do produto e o valor total da compra.

Você deve estar se perguntando: por que o valor unitário do produto não está na entidade Produto?

Observe que o valor unitário muda de acordo com o pedido. Não é uma situação muito bacana para perceber - se você é um consumidor, como eu - mas é uma possibilidade real. Como o valor unitário depende mais do pedido do que do produto, ele fica na entidade Pedido.

TERCEIRA FORMA NORMAL - 3FN

Uma Entidade está na Terceira Forma Normal se ela estiver na 2FN e se nenhuma coluna não-chave depender de outra coluna não-chave. Na terceira forma normal vamos eliminar aqueles campos que podem ser obtidos pela equação de outros campos da mesma tabela.

Vamos olhar novamente nossa entidade PEDIDO.

O atributo Valor Total, na verdade, é o resultado da multiplicação da quantidade pelo valor unitário.

Para aplicar a 3FN, devemos:

  • Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave;

  • Removê-los.

Aplicando a 3FN, vamos eliminar o atributo Valor Total.

QUARTA FORMA NORMAL - 4FN

Uma Entidade está na Quarta Forma Normal se ela estiver na 3FN e não existirem dependências multivaloradas.

QUINTA FORMA NORMAL - 5FN

Uma Entidade está na Quinta Forma Normal se ela estiver na 4FN e está ligada à noção de dependência de junção. Se uma relação é decomposta em várias relações e a reconstrução não é possível pela junção das outras relações, dizemos que existe uma dependência de junção. Existem tabelas na 4FN que não podem ser divididas em duas relações sem que se altere os dados originais.

  • OLTP: Online Transaction Processing ou Processamento de Transações em Tempo Real, são sistemas que se encarregam de registrar todas as transações contidas em uma determinada operação organizacional.

  • OLAP: Online Analytical Processing ou Processamento Analítico em Tempo Real, é a capacidade para manipular e analisar um grande volume de dados sob múltiplas perspectivas. Utilizamos OLAP, principalmente, em ambientes de BI e Data Warehouse.

Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags