Modelagem de Banco Dados Relacionais

Durante anos venho desenvolvendo projetos relacionados a implantação, administração e atualização de Data Warehouses e Data Mart’s.
Dentro deste universo de Business Intelligence noto que grande parte do impacto negativo destes projetos se deve pela má qualidade das origens das informações relacionais ou seja nossos bancos de dados relacionais.

Com a crescente necessidade de se implantar sistemas transacionais em tempo record, estamos literalmente “esquecendo” que a qualidade destes sistemas depende de algumas etapas  a serem seguidas. Dentro destas etapas encontramos o processo de Design de um Banco de Dados e a correta modelagem de dados, este “esquecimento” vem gerando bancos transacionais sem qualidade, sem integridade e com uma contínua falta de performance.

O objetivo deste pequeno artigo é passar algumas dicas do quão importante é a correta modelagem e design de um banco de dados relacional.

Design de Banco de Dados.

Durante os cursos de Banco de Dados em que ministro costumo focar um bom tempo sobre as formas normais , as etapas para realizar um design de banco de dados e os resultados destes processos para uma corporação, o primeiro ponto que devemos ter claro são as etapas para o Design de um Banco de Dados Relacional.

Modelo Descritivo:
O modelo descritivo de dados é um documento que indica a necessidade de
construção de um banco de dados. Neste cenário o analista deve realizar entrevistas com as pessoas envolvidas na empresa afim de documentar de forma descritiva a realidade de trabalho da empresa.
Ex: A Fábrica de Móveis Madeira de Lei deseja elaborar um sistema de informação para controlar suas atividades. O objetivo é modelar uma solução que atenda as mais importantes áreas da empresa. Os requisitos estão listados abaixo: A empresa atua com clientes previamente cadastrados e só atende a pessoas jurídicas. Todos os clientes da Madeira de Lei são varejistas de diversas regiões do país. Sobre os clientes é fundamental armazenarmos um código que será o identificador único, o CNPJ, a razão social, o endereço de cobrança, o endereço de correspondência e o endereço para entrega das mercadorias compradas, os telefones de contato, a pessoa de contato, o ramo de atividade e a data do cadastramento.

Modelo Conceitual:
Neste modelo começamos a dar forma ao que futuramente serão nossas tabelas ou seja, extraímos informações do modelo descritivo com a seguinte técnica:

  • Substantivos – (pessoas, coisas, papéis, objetos) são denominados entidades, as quais são elementos que possuem informações a serem tratadas;
  • Propriedades ou características ligadas aos substantivos são chamadas de atributos, os quais são elementos que caracterizam uma entidade.
    Ex: Clientes: Cliente Código, Cnpj, Razão Social, Endereço de Cobrança, Endereço de Correspondência, Endereço de Entrega, Telefone de Contato, Pessoa de Contato, Ramo de Atividade, Data Cadastramento

Modelo Lógico:
Neste modelo iniciamos a diagramação das entidades e atributos extraídos do modelo anterior. Neste momento ainda não podemos definir qual tecnologia de banco de dados será utilizada. Modelo Lógico

Modelo Físico:
Com a conclusão do modelo lógico podemos realizar a modelagem física, neste momento já podemos definir qual a tecnologia de banco de dados que a corporação irá trabalhar. Com o modelo físico declaramos as tabelas físicas (antigas entidades dos modelos anteriores) e suas colunas (antigas propriedades dos modelos anteriores).
Vale destacar que é dentro do modelo físico onde pensamos nas chaves primárias, chaves estrangeiras, chaves únicas e demais constraints, sempre observando a integridade física e relacional do modelo de dados.
Ex:Modelo Físico

O que é Normalização de Dados?

Normalização de Dados é basicamente o processo de organizar dados e eliminar informações redundantes de um banco de dados.
A normalização envolve a criação de tabelas, definição de relacionamentos, eliminação de informações redundantes, incorporação de integridade de dados e relacional há sua base de dados.
Pode não parecer importante, porém a correta definição dos relacionamentos entre as tabelas irá nos oferecer a eliminação de dados repetidos e também proteger as informações.
Estas atividades são realizadas seguindo algumas regras que denominamos de Normal Forms ou formas normais.

Este processo apresenta grandes vantagens:

  • Eliminação de dados repetidos;
  • Compactação do banco de dados;
  • Armazenamento dos dados de forma lógica (redução de campos com conteúdo descritivo);
  • Com a redução na quantidade de colunas vamos ter um aumento significativo na velocidade dos processos de classificar e indexar;

Entretanto, o processo de normalizar os dados irá gerar um aumento na quantidade de tabelas e consequentemente aumentará a complexidade das associações exigidas entre elas.

Outro aspecto que muitos creem ser negativo é que as tabelas, em vez de assimilar dados reais (descritivos), podem conter apenas códigos. Desta forma para pesquisas muitas vezes simples deveremos realizar associação de tabelas.
Nesta publicação vamos abordar as três principais regras de normalização:

  • First Normal Form (1NF);
  • Second Normal Form (2NF);
  • Third Normal Form (3NF);

Observação: Para que um banco de dados esteja normalizado em sua terceira forma normal ele deverá antes estar de acordo com a primeira e a segunda forma normal. Dentre as regras de formas normais podemos ir até a quinta forma (5FN).

First Normal Form (1NF – Primeira Forma Normal)
Para que um banco esteja na primeira forma normal 1FN, deveremos retirar da mesma tabela grupos de dados repetidos, tanto colunas com informações repetidas como linhas (Valores) repetidos ou seja não podemos admitir repetições de valores e ou campos (Colunas).
Procedimento para atingirmos a 1NF:

Identificar a chave primária da ENTIDADE (Tabela);
Chave Primária: Atributo que dará integridade aos dados da entidade, ou seja, que não se repetirá e garantirá que a informação está correta e segura. Ex: Código Cliente
Identificar as colunas e valores que provocam repetição nas entidades;
Criar uma nova entidade com uma chave primária e uma chave de ligação utilizando o grupo que provocou a repetição;

Exemplo de normalização 1NF: Entidade com “comportamento” incorreto.
Imagem003
Ambos os comportamentos provocam repetição ou de Atributos (Colunas) com os mesmos tipos ou de Valores (Linhas), tornando as informações duplicadas.
Neste caso devemos segmentar a entidade Clientes e criar duas novas Entidades (Endereço e Telefone).
Exemplo:
Imagem004
Desta forma vamos eliminar as repetições de Atributos (Colunas) e Valores (Linhas) que estavam presentes na entidade CLIENTES, aumentando sua integridade uma vez que tanto o nome quanto o código do cliente não irão se repetir.

Second Normal Form (2NF – Primeira Forma Normal)

Para que uma Tabela/Entidade esteja na Segunda Forma Normal é necessário que antes de tudo ele já esteja modelado na 1NF e também 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).
Traduzindo em uma linguagem mais clara, durante a Segunda Forma Normal, mapeamos todas as tabelas que possuem campos descritivos (Textos, Alfanuméricos) com seu preenchimento repetitivo/redundante. Este comportamento além de provocar um aumento significativo no espaço de armazenamento dos dados também irá gerar uma base “suja”.
Temos como exemplo a tabela Clientes com os seguintes atributos/campos:
Cod Cliente, Cpf Cliente, Nome Cliente, Profissão Cliente
Imagem005

Para evitar este tipo de comportamento, precisamos criar novas tabelas cadastrais onde os campos descritivos passarão por uma padronização de preenchimento, melhorado a Integridade e Velocidade dos nossos dados.
Ex:
Imagem006

Com a criação da tabela Profissão, teremos agora uma Primary Key (Chave Primária) para a tabela Profissão – Cod Profissão e também uma Chave Estrangeira (Foreing Key) para a tabela Clientes – Cod Profissão, vamos continuar mantendo a integridade de dados e melhoraremos nosso modelo com a integridade relacional das informações ou seja, garantiremos que dentro da tabela de Clientes existirão somente profissões que existam dentro da tabela de Profissão.

Third Normal Form (3NF – Terceira Forma Normal)

Para que uma Tabela/Entidade possa ser modelada em sua Terceira forma normal ela deve, estar primeiro em sua Segunda forma normal e se nenhuma coluna não-chave depender de outra coluna não-chave.
Explicando de uma forma mais simplificada e correta, para normalizarmos uma tabela na terceira forma normal deveremos rastrear quais colunas desta tabela podem ser obtidas através da equação de outras colunas da mesma tabela. Colunas que não são fundamentais ou que sua existência pode ser substituída por cálculos geram a gravação de informações desnecessárias, ocupando maior espaço em um database e impactando de forma negativa na velocidade de pesquisa sobre esta tabela.

Exemplos Clássicos de Colunas que podem ser substituídas por “cálculos” são:

Tabela de Clientes onde eu tenho as seguintes colunas (Cod_Cliente, Nome_Cliente, Data_Nas, Idade)
A coluna IDADE é completamente descartável ou seja podemos obter a idade em anos de um cliente calculando a diferença entre (Data Atual – Data Nascimento).
Desta forma a tabela de Clientes ficaria assim:Imagem007

Reforçando o conceito, então sempre que tivermos colunas em uma tabela onde os valores desta coluna podem ser obtidos por cálculos / equações (sejam matemáticas ou funções de caracteres), devemos eliminar esta coluna da tabela em questão. Desta forma vamos diminuir de forma considerável o armazenamento de informações desnecessárias aos negócios de uma corporação produzindo bancos de dados mais compactos com integridade de dados e integridade relacional.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s