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 |
... |