Modelagem

A modelagem deve sempre ser feita após muita analise, pois é nela em que muitos dos problemas em bancos de dados surgem. Sem uma boa análise da área de negócio antes da implementação do banco, conforme ele vai evoluindo, problemas vão surgir e tomamos abordagens ruins para soluciona-los (normalmente gambiarras).

Dicas Gerais

  • definir casos de uso com a área de negócio;
  • todo atributo deve ser obrigatório:
    • atributos nulos devem ser evitados, utilizados apenas em último caso;
    • em campos opcionais devem sempre ter um valor default;
    • uma busca por valores nulos em uma coluna indexada não funciona, já que valores nulos não são indexados;
    • em entidades que podem ser de N tipos, devem ser criadas tabelas auxiliares e utilizando uma relação 1-1 (e.g. Pessoa → PessoaFisica e PessoaJuridica);
    • campos nulos prejudicam sistemas de modelagem preditiva ou de data-mining;
    • campos numéricos nulos causam uma necessidade de lógica maior em cálculos;
  • toda chave estrangeira deve ter índice:
    • importante para consultas relacionando com a tabela pai;
    • alterações ou exclusões na tabela pai;
  • evitar chaves primárias compostas:
    • para utilizar uma tabela que tem chave primária composta como chave estraingeira em outra tabela, será necessário levar todos as chaves para a tabela estrangeira;
    • os SGBD permitem que uma das chaves de uma chave primária composta seja nula, isso causa perda na referência em chaves estrangeiras;
    • recorrentemente uma tabela utiliza mais de uma chave estrangeira, se cada uma dessas chaves for uma chave composta, as colunas necessárias nessa tabela apenas para conter chaves será exorbitante, prejudicando a performance de uma query;
  • evitar muitos atributos por tabela; tabelas com mais de 8kb por registro;
  • coluna com nome terminado em número; o correto é fazer uma tabela separada e utilizar referências;
  • tabelas com campos CLOB/BLOB, ...;
  • uma chave primária não deve ter informação pertinente (chave natural);
    • regras podem ser alteradas e alterações seriam necessárias em chaves primárias, que se propagaria para tabelas estrangeiras;