Esse artigo faz parte da revista SQL Magazine edição 58. Clique aqui para ler todos os artigos desta edição

windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div">

LEAD: BOX

De que se trata o artigo:

Aplicação do processo de normalização de um modelo de dados relacional. Neste artigo foi seguido um estudo de caso referente a um modelo de dados não normalizado e foram aplicadas as diferentes formas normais neste modelo para demonstrar a sua evolução e benefícios para um banco de dados.

Para que serve:

Fornecer um apoio a quem trabalha com projeto de banco de dados relacional para a tarefa de normalização de um modelo de dados, melhorando a estruturação de um banco de dados e conseqüentemente o desempenho deste banco de dados. Ainda apresenta informações úteis para aqueles profissionais que já recebem um modelo de dados pronto e precisa atuar em cima dessa informação para prover melhorias em tal modelo.

Em que situação o tema é útil:

Em diversas situações, tais como: projeto de modelagem de um novo banco de dados, evolução em modelos de dados relacionais bem documentados e que ainda não está completamente normalizado, evolução em modelos de dados relacionais que não possuem qualquer documentação e aplicação de estratégias de ajustes (tunning) de melhorias em bancos de dados através da normalização ou até desnormalização de um banco de dados.

 

A normalização de dados é provavelmente um dos aspectos mais abordados em modelagem de banco de dados. Antes de construirmos um modelo de dados a ser utilizado em uma aplicação, devemos tratar alguns pontos sobre sua normalização. Esses pontos estão relacionados a se usamos ou não as formas normais, qual dessas formas usar em uma aplicação e quando devemos desnormalizar o modelo.

Para tratar sobre normalização de modelos de dados, primeiramente iremos discutir um pouco sobre as formas normais mais utilizadas.

Nós não iremos nos aprofundar em cada forma normal. Existem diversos textos disponíveis em livros e na internet que descrevem e analisam os principais detalhes sobre normalização. Em vez disso, o nosso objetivo será apresentar, a partir de um estudo de caso de um sistema que deve fazer o gerenciamento de artistas e seus álbuns, mecanismos necessários para que você possa identificar o estado atual dos seus dados, definir quais são os objetivos da sua aplicação, analisar se o modelo está atendendo ou não a estes objetivos, e normalizar (e desnormalizar) seus dados quando necessário.

 

O Que Seria Normalização?

Normalização é o processo de simplificar os dados de um banco de um determinado domínio de uma forma mais eficiente através da eliminação de dados redundantes. O entendimento da definição da palavra eficiente em relação à normalização é o conceito chave a ser considerado. Eficiência, nesse contexto, se refere à redução da complexidade de sua estrutura a partir de um ponto de vista lógico. Eficiência não necessariamente significa melhor desempenho e nem melhoria no processamento das consultas em um banco de dados. Isso até pode soar como algo completamente contraditório a tudo aquilo que ouvimos sobre o termo projetar, então por esse motivo vamos primeiramente discutir os conceitos de normalização e só então iremos discutir algumas considerações sobre desempenho.

 

Formas Normais

Inicialmente foram propostas três formas seqüenciais para classificar os dados em um banco de dados, que foram chamadas de: primeira forma normal (1NF), segunda forma normal (2NF) e terceira forma normal (3NF). Depois dessas formas normais definidas inicialmente, pesquisas indicaram que elas poderiam resultar em algumas anomalias associadas à atualização dos dados.  Portanto, outras duas formas normais adicionais foram desenvolvidas para lidar com essas questões identificadas, são elas: quarta forma normal (4NF) e quinta forma normal (5NF). Existem pesquisas direcionadas para o desenvolvimento de uma sexta forma normal (6NF) para lidar com bancos de dados temporais, mas esta forma não faz parte do escopo deste artigo.

O que precisamos salientar é que as formas normais são relacionadas. Por exemplo, se um banco de dados está na 3NF, por definição ele também está nas formas normais 1NF e 2NF. A seguir vamos discutir rapidamente sobre cada forma normal e explicar como identificá-las. Para isso, seguiremos o estudo de caso de um sistema responsável pelo gerenciamento de artistas e seus álbuns, detalhado a seguir.

 

Estudo de Caso: Sistema de Gerenciamento de Artistas e seus Albuns

Como estudo de caso, iremos considerar a modelagem dos dados para um sistema de gerenciamento de artistas e seus álbuns (ex: CD, DVD). Instâncias desse modelo a ser desenvolvido podem ser encontradas facilmente nas principais lojas virtuais para aquisição de CD’s e DVD’s pela internet, como por exemplo Americanas.com.br e Submarino.com.br. É importante ressaltar que não estamos afirmando que os modelos aqui apresentados seguem os modelos utilizados por essas lojas, mas seus domínios são semelhantes e nos permitem entender em que situação os modelos apresentados poderiam ser utilizados.

Neste estudo de caso, estaremos tratando com uma loja musical que armazena dados sobre todos os artistas e seus álbuns. É necessário guardar informações sobre o nome dos artistas, seu gênero musical, o nome de seus álbuns, a data de seu lançamento, o seu formato (CD ou DVD) e preço.

Ao longo do artigo veremos a transformação dos dados deste sistema em cada forma normal, apresentados inicialmente na Tabela 1.

 

Nome do Artista

Gênero

Nome do Álbum

Ano de Lançamento do Álbum

Formato

Preço

Jorge Aragão

Samba

Show da Noite Pro Dia

2004

DVD

R$ 32,90

Roberto Carlos

MPB

En Vivo

Acústico MTV

2008

2002

CD

DVD

R$ 29,90

R$ 39,90

Ivete Sangalo

Axé

Ao vivo no Maracanã

2007

DVD

R$ 39,90

Zeca Pagodinho

Samba

Acústico MTV

ACÚSTICO MTV 2 - GAFIEIRA

2003

2006

CD

DVD

R$ 19,90

R$ 32,90

Cláudia Leite

Axé

DVD Claudia Leite - Ao Vivo em Copacabana

2008

DVD

R$ 39,90

Tabela 1. Artistas e Álbuns: Grupo Repetido de Dados

 

Primeira Forma Normal (1NF)

Na primeira forma normal, toda entidade do banco de dados possui um atributo (ou um conjunto de atributos) do tipo chave primária identificado(s) durante a etapa de modelagem das entidades e relacionamentos do sistema. Nessa forma, cada atributo de uma tabela deve ter apenas um único valor, ou seja, para um banco de dados estar na 1NF ela não pode ter nenhum grupo repetido. Um grupo repetido corresponde a dados nos quais uma simples instância pode ter múltiplos valores para um mesmo atributo.

Note na Tabela 1 que para o primeiro artista (Jorge Aragão) existe apenas um álbum armazenado, e portanto um ano de lançamento, em um formato e apenas um preço. No entanto, para os artistas 2 e 4 (Roberto Carlos e Zeca Pagodinho) existem dois álbuns, e conseqüentemente dois anos de publicação e em dois formatos e com dois preços. Na prática, nós não podemos garantir qual ano de lançamento, formato e preço pertence a qual álbum. Tudo bem, seria simples assumir que o primeiro ano de lançamento, formato e preço pertence ao primeiro nome do álbum, mas como podemos garantir que os nomes dos álbuns, ano de lançamento,  formato e preço serão sempre informados em ordem e não serão mudados mais para frente?

Existem duas formas de eliminar o problema de grupos repetidos. Primeiramente, podemos adicionar novos atributos para lidar com os álbuns adicionais, como está sendo feito na Tabela 2.

 

Nome do Artista

Gênero

Nome do Álbum 1

Ano de Lançamento do Álbum 1

Formato do álbum 1

Preço do álbum 1

Nome do Álbum 2

Ano de Lançamento do Álbum 2

Formato do álbum 2

Preço do álbum 2

Jorge Aragão

Samba

Show da Noite Pro Dia

2004

DVD

R$ 32,90

NULL

NULL

NULL

NULL

Roberto Carlos

MPB

En Vivo

2008

CD

R$ 29,90

Acústico MTV

...
Quer ler esse conteúdo completo? Tenha acesso completo