quarta-feira, 8 de setembro de 2010 Artigos Informativo Banco de Código
Usuário
Senha
esqueci     
Cadastro
  Usuários Online
4
  Principal
  Hospedagem
  Suporte
  Declaração
  Termos de uso
  Contato
  Links
  

<< Volta para a lista de artigos

#2 - 1/7/2006 15:00:00

Um pouco sobre modelagem de dados

Uma boa modelagem de banco de dados é de grande valia no desenvolvimento de um site profissional, e essa modelagem não é algo exatamente simples. Muitos acabam modelando razoavelmente bem os bancos de dados simples por algo que poderíamos chamar de 'talento natural'. Esta NewsLetter tem o objetivo de dar um exemplo básico, onde alguns têm acertado, mas a grande maioria realmente erra. Esse errar não significa, necessariamente, que o site não vá funcionar. Nesse caso específico, e realmente muito comum, gera um desperdício de espaço, e até mesmo dificuldade na manutenção. Passemos, então ao exemplo, a partir do cadastro de usuários ASPECTO.NET.

Considerando apenas o ID e os campos preenchidos pelo usuário, e deixando de fora os campos com fins de estatísticas e os campos de controle temos o seguinte:
  • ID
  • Username
  • E-mail
  • Senha
  • Nome
  • País
  • Cidade
  • Idade
  • Sexo
  • Lista de discussão
  • Fala inglês?

    O campo ID é gerado automaticamente, e não há nada especial sobre os campos username, email, senha e nome, que campos texto. O campo sexo, que é uma seleção, oferece as opções 'Masculino' e 'Feminino'. O que é armazenado, no entanto, é o valor '1' ou '2', que ocupa apenas uma posição. Não faria sentido criar um campo com 9 posição (tamanho da palavra 'Masculino') se somente 2 opções são possíveis. Na opção 'altera cadastro' o conteúdo é verificado, e se for '1' já seleciona 'Masculino'. No caso de '2' seleciona 'Feminino'. Algo parecido acontece com o campo 'idade' (faixa etária, na verdade), com a diferença que são 7 as opções e não apenas duas. Os campos 'Lista de discussão' e 'Fala inglês' também oferecem apenas 2 opções, mas são to tipo 'checkbox' porque são lógicos. O usuário fará parte da lista de discussão, ou não. O usuário fala inglês, ou não.

    O campo 'país' segue o exemplo de 'idade', só que com um número de opções ainda maior, mas ainda assim limitado. Na dinâmica de nosso mundo, hoje, a qualquer momento pode surgir um novo país, e acontecendo isso o seu nome será incluído na lista de seleção. Já o campo 'cidade' considera algo ainda mais importante na modelagem, e é esse o ponto em que muitos 'erram', no sentido de não otimizar os recursos da máquina, como o espaço em disco.

    O número de opções para Cidade, ainda que não infinito, é bastante grande. Considerando que existem usuários em muitos países, não podemos oferecer uma lista com opções. Criar um campo texto, de tamanho 30 (ou mais) para armazenar a cidade seria um desperdício de espaço, e é o ponto em que muitos 'erram'. Teríamos muitos registros com o campo cidade preenchido com 'Rio de Janeiro', 'São Paulo', 'Porto Alegre', 'Belo Horizonte', 'Beijing' (Pequim), 'London', 'New York', entre outras. O que fazemos, nesse caso, é criar uma tabela com um campo numérico (ID) e outro texto (30 posições, no nosso caso). No momento em que um usuário se cadastra a cidade que ele informou é procurada nessa tabela. No caso de ser encontrada, o ID dela será lançado no campo cidade (numérico) da tabela de usuários. Caso não seja encontrada ela será incluída e seu ID será lançado na tabela de usuários, uma vez que passou a existir. Dessa forma, estaremos utilizando um campo numérico, poupando muitos bytes, porque temos cada cidade registrada uma única vez em uma tabela e o seu ID utilizado quantas vezes forem necessárias, em um campo da tabela principal. Para a alteração do cadastro fazemos o inverso: procuramos a cidade cujo ID está na tabela de usuários, e lançamos o seu nome no campo texto próprio.




  • << Volta para a lista de artigos
      << Voltar