Criando a sua Loja Virtual - Objetivos e Modelagem de dados


Se você deseja criar um site de comércio eletrônico - uma Loja Virtual -  deverá levar em conta os diversos aspectos envolvidos neste processo. A definição da tecnologia utilizada , o perfil dos usuários , a segurança das transações , a qualidade e  quantidade das  informações e  a estrutura de suporte , dentre outros aspectos , podem ditar o fracasso ou sucesso do seu site de e-commerce. 

Iremos mostrar as principais etapas envolvidas na criação de uma loja virtual usando banco de dados. Ao final deste último capítulo você estará apto há criar a sua própria loja Virtual na WEB usando os conceitos aqui descritos.

Abordaremos um exemplo simples, mas que envolve praticamente todas as tarefas que você vai precisar saber para criar a sua própria loja virtual. Não iremos aqui nos preocupar com a aparência do site (você vai perceber que isto é verdade). Nossa preocupação será mostrar de forma clara cada conceito técnico empregado no desenvolvimento do projeto. Isto não quer dizer que você não deve se preocupar com a aparência. Uma interface inteligente que apresente com clareza a empresa e seus produtos e com todas a informações necessárias para orientar o usuário que acesse o seu site é fundamental. Nada de abusar de imagens e tornar o acesso ao site lento a ponto de irritar o internauta , nem usar uma interface tosca e rudimentar o que poderia causar desconfiança aos usuários.

O objetivo – Eu quero vender meus produtos na WEB

Bem , você possui uma Softhouse/Livraria (podia ser uma livraria, uma discoteca , uma loja de eletrodomésticos , um revendedora de automóveis, etc.) e decidiu colocar os sistemas desenvolvidos pela sua empresa e os seus livros a venda na Internet. Neste momento a sua dúvida principal é - "Por onde eu começo ???".

Você deverá definir qual o objetivo do site, o público alvo, as informações que você deseja exibir , os serviços disponibilizados e a tecnologia a ser empregada para construir o site. Simples !!! não é mesmo ?

A primeira coisa que você deve fazer é pensar em como é feita a venda de seus produtos atualmente ou como seria feita na forma tradicional . Na maioria das empresas o ciclo pode ser resumido da seguinte forma:

1-) É feita a propaganda dos produtos. (informações sobre os produtos)

2-) Os clientes entram em contato com a empresa. (Telefone, balão, fax, internet , vendedores, etc..)

3-) Os clientes examinam o produto (catálogo de produtos, demos, vendedores, etc..)

4-) Os clientes fazem o pedido do produto.

4-) Os clientes compram o produto.

5-) É mantido um cadastro de clientes para mala direta para propaganda ou contato posterior.

Na Internet , com algumas adequações , o ciclo será praticamente o mesmo, só uma coisa vai mudar : o primeiro contato de seus clientes potenciais será feito virtualmente , ou seja , via Internet, através do site de sua empresa.

Para poder disponibilizar a sua loja virtual você deverá empregar a tecnologia que permite concretizar o seu negócio na WEB , você vai usar : HTML, JavaScript, ASP , ADO , SQL e banco de dados na Internet.

Modelando os dados – Banco de dados, Tabelas , campos e registros

Você já percebeu que vai precisar armazenar informações em arquivos de banco de dados. Essas informações , para o nosso caso , são:

1-) Informações sobre os produtos (identificação , nome, valor, forma de envio, etc..)

2-) Informações sobre os clientes ( identificação, nome, endereço, etc..)

3-) Informações sobre os pedidos dos clientes ( cliente, produto, quantidade, etc..)

Além disto você deverá oferecer informações sobre a sua empresa de um forma clara para que o usuário tenha confiança em adquirir os seus produtos.

Como guardar essas informações de forma eficiente e segura ? Dependendo da plataforma onde você pretende criar a aplicação a resposta será diferente, mas para podermos trabalhar com um universo maior de usuários iremos assumir que você irá usar um banco de dados padrão Access , um arquivo com extensão mdb , para armazenar os seus dados.

A primeira coisa a fazer é criar o seu banco de dados , para isso iremos utilizar o Access 2000 vamos batizá-lo com o nome de Esoft.mdb. Ele conterá todas as informações que precisamos para gerenciar nossa loja virtual.

Tabela Clientes

O próximo passo é criar as tabelas para cada entidade que desejamos controlar , vamos começar representando a entidade clientes com a tabela clientes. A tabela clientes , como o próprio nome diz , deverá armazenar informações sobre o nossos clientes , então devemos criar campos na tabela para cada atributo da entidade clientes. Vamos montar a estrutura da tabela clientes:

Campo Descrição
ClienteNome O campo Nome representa o atributo que irá armazenar os nomes dos nossos clientes
ClienteEndereco O campo Endereço representa o atributo que irá armazenar o endereço da entidade clientes
ClienteCidade O campo Cidade representa o atributo que irá armazenar o nome da cidade da entidade clientes
ClienteEstado O campo Estado representa o atributo que irá armazenar a sigla do estado da entidade clientes
ClienteCep O campo Cep representa o atributo que irá armazenar o codigo postal da entidade clientes
ClienteTelefone O campo Telefone representa o atributo que irá armazenar o número do telefone da entidade clientes
ClienteEmail O campo E-mail representa o atributo que irá armazenar o e-mail eletrônico da entidade clientes
ClienteDocumento O campo Documento representa o atributo que irá armazenar o número do documento (Rg,CIC ou CGC) da entidade clientes
ClienteSenha O campo Senha representa o atributo que irá armazenar a senha que identificará o cliente em nossa entidade clientes
ClienteSexo O campo Sexo representa o atributo que irá armazenar o sexo (M,F) da entidade clientes
ClienteNascimento O campo Nascimento representa o atributo que irá armazenar a data de nascimento (dd/mm/yyyy) da entidade clientes

Nossa tabela clientes apresenta 11 campos com os quais pretendemos identificar um cliente. Todos os campos estão relacionados com a entidade clientes e cada campo é um atributo da entidade clientes. Assim, como primeira regra , podemos dizer que sempre devemos criar tabelas separadas para cada entidade que desejamos representar no banco de dados e , como segunda regra, devemos criar um campo para cada atributo da entidade que desejamos identificar.

Mas há ainda um pequeno detalhe que precisamos ajustar em nossa tabela , como queremos identificar cada cliente de forma a evitar duplicidade, como faremos com clientes com o mesmo nome (homônimos) ? Para contornar este problema , se quisermos identificar cada cliente de forma única , teremos que atribuir um código único a cada cliente. Vamos então incluir um campo em nossa tabela chamado ID (Identificador) que representará um código único atribuído a cada cliente, e que o identificará. Aproveitando a funcionalidade do banco de dados Access nosso campo será definido como do tipo Autonumeração , significando que o próprio sistema irá atribuir e incrementar o código a cada cliente a medida que incluirmos os clientes em nossa tabela. Iremos definir este campo como uma chave primária ; fazendo isto não iremos permitir repetições de códigos de clientes na tabela, pois o sistema nos avisa gerando uma erro em tempo de execução. Para encerrar nossa tabela clientes iremos acrescentar a cada nome de campo da tabela o prefixo - Cliente. Veja a abaixo como ficou a estrutura completa da nossa tabela clientes :

Tabela Produtos

Agora iremos criar a tabela produtos e campos para cada atributo da entidade produtos. Da mesma forma que na tabela clientes, é nosso desejo poder identificar cada produto de forma única. Para isso iremos atribuir um campo que irá conter um número que representará o código do produto e que será único para cada produto. Este campo também será do tipo Autonumeração e será definido como a chave primária da tabela. A estrutura para tabela produtos vem a seguir:

Campo Descrição
ProdutoID O campo ProdutoID , o atributo que irá armazenar o código dos produtos .
Nome O campo Nome representa o atributo que irá armazenar o nome de cada produto.
Valor O campo Valor representa o atributo que irá armazenar o valor de cada produto.
Descricao O campo Descrição representa o atributo que irá armazenar a descrição de cada produto .
Urlimagem O campo Urlimagem representa o atributo que irá armazenar o caminho de localização do arquivo imagem do produto.
paginas Define o número de páginas que possui o livro
Autor O nome do autor do livro ou Software
Categoria A categoria na qual esta classificada o produto
peso O peso em gramas do produto.
estoque A quantidade atual do produto em estoque

A estrutura da tabela Produtos

Tabela Pedidos

A tabela pedidos deverá armazenar os pedidos dos clientes . Assim , quando o cliente escolhe um produto ele estará fazendo um pedido . Precisamos armazenar os dados referentes a cada pedido feito por um cliente de forma a poder controlar nossa loja virtual. A princípio poderíamos pensar em sua estrutura como sendo da seguinte forma:

Campo Descrição
Cliente Campo para identificar o cliente que comprou o pedido
Nome O nome do produto
ValorPedido O valor do produto
Quantidade A quantidade adquirida do produto
DataPedido A data do pedido.
Fechado Se o pedido foi completado ou não
Cartao Qual cartao o cliente usou para fazer o pagamento

Afinal , estamos armazenando as informações que precisamos , pois temos na tabela: o nome cliente que fez o pedido , o nome , valor e quantidade do produto adquirido, a data do pedido , a indicação se o pedido foi completado ou não e qual o cartão usado pelo cliente. Ao examinarmos melhor poderemos perceber que se usarmos a tabela com a estrutura proposta nossa aplicação  além de desperdiçar espaço em disco e memória  não irá funcionar adequadamente e , o que é pior , nos dará um grande trabalho de manutenção.

Vamos mostrar como ficarão os dados armazenados na tabela pedidos , usando como exemplo os pedidos feitos pelos usuários hipotéticos João e José. (para simplificar adotamos materiais de escritório como produtos). Veja como ficam os dados na tabela:

Cliente Nome ValorPedido Quantidade DataPedido Fechado Cartao
Joao Lápis 101 1.00 5 12/04/1999 Sim Visa
Joao Borracha 2.00 2 12/04/1999 Sim Visa
Joao Apontador 3.50 3 14/02/2000 Não Visa
Joao Caneta 4.00 5 14/02/2000 Não Visa
Jose Borracha 2.00 3 17/03/2000 Sim Visa
Jose Lápis 101 1.00 4 17/03/2000 Sim Visa

Você percebeu que temos uma redundância em nossos dados ? O nome do produto, valor e quantidade são repetidos desnecessariamente ocupando assim espaço. Outro problema é a identificação do pedido do cliente. Perceba que João tem dois pedidos , mas como identificá-los ? Imagine agora a seguinte situação : Você Alterou o nome de um produto e precisa refletir isto na tabela pedidos. Vai ter que alterar todos os pedidos para aquele produto. Sentiu o drama ???

Vamos melhorar a nossa tabela pedidos adotando os seguintes procedimentos:

  1. Introduziremos um campo chamado PedidoID para identificar cada pedido de forma única. Ele será do tipo autonumeração e será a chave primária. Assim cada pedido terá um código único que o identificará.
  1. O campo Cliente que armazena o nome do cliente, será substituído pelo campo ClienteID e irá representar o código do cliente já utilizado na tabela clientes , de forma que sabendo o código do cliente teremos  todos os dados relacionados na tabela clientes.
  1. Incluiremos o campo DataPedido que nos informará sobre a data do pedido.
  1. O campo quantidade será removido , pois cada pedido terá identificação única , logo a quantidade deverá fazer parte de uma outra tabela que irá detalhar o pedido feito.
  2. O campo Cartao será substituído pelos seguintes campos:

    CartaoCredito - O nome do cartão de crédito utilizado no pagamento.

    NumeroCartao - O número do cartão de crédito.

    TitularCartao - O nome do titular do cartão de crédito.

              ValidadeCartao - A validade do cartão de crédido.

  1. Mantemos o campo ValorPedido que irá determinar o valor do Pedido.
  2. Vamos introduzir o campo ValorFrete para definir qual o valor do frete a ser cobrado no pedido.
  3. Vamos criar também campos para identificar o destinatário do pedido.( O destinatário pode não ser necessariamente o usuário que faz o pedido. )

NomeDestinatario - O nome do destinatário.

EnderecoDestinatario - O endereço do destinatário

CidadeDestinatario - A cidade do destinatário.

EstadoDestinatario - O Estado do destinatário

CepDestinatario - O cep do  destinatário.

  1.  O campo Fechado irá indicar se o pedido foi efetivado com sucesso ou não. Este campo assumirá os valores Verdadeiro ( True ) quando o pedido tiver sido concluído e Falso ( False) caso o usuário tenha cancelado ou não tenha concluído o pedido.

Nossa tabela Pedidos ficou com a seguinte estrutura:

O campo datapedido foi definido como do tipo Data/Hora pois irá armazenar valores do tipo data.

O campo fechado foi definido como do tipo Booleano, podendo assumir dois valores True/Sim e False/Não. Quando um pedido estiver aberto o valor assumido será False/Não.

A tabela itens do Pedido

Definimos que cada pedido será identificado de forma única , desta forma um pedido poderá conter diversos produtos que são os itens do pedido feito pelo cliente. Devemos criar uma tabela para armazenar os itens do pedido. Ela deverá conter : o código do pedido, o código do produto , a quantidade adquirida do produto e um campo para identificar cada item de forma única , um campo autonumeração e chave primária da tabela. A tabela itens_pedidos terá a seguinte estrutura:

Cada pedido terá um código único e será composto por diversos itens que comporão o pedido. A relação entre as tabelas será o campo PedidoID que representa o código do pedido. Podemos visualizar esta situação na figura a seguir:

É muito importante compreender esta implementação , pois aqui está o coração de sua loja virtual.

A tabela Cartões

A tabela Cartoes deverá armazenar um identificador para cada cartão e o nome do cartão correspondente. O campo CartaoCreditoID representará este identificador, será do tipo Autonumeração e chave primária. O campo CartaoCreditoNome representará o nome do cartão permitido na transação. Assim a estrutura da tabela Cartoes fica assim:

Os relacionamentos e a integridade referencial

Você já deve ter percebido que temos campos relacionados em todas as tabelas criadas até agora: a figura a seguir mostra todos os relacionamentos entre as tabelas usadas em nossa loja virtual:

Relacionamentos entre as tabelas

Vemos que o campo ClienteID da tabela Clientes esta relacionado com o campo ClienteID da tabela Pedidos O tipo de relacionamento é de um-para-muitos , ou seja, teremos um único código de cliente na tabela Clientes que poderá estar relacionado a muitos códigos de clientes na tabela pedidos. Neste tipo de relacionamento , como em todos os usados neste projeto, foi imposto a integridade referencial.

A integridade referencial é um sistema de regras que muitos bancos de dados relacionais , inclusive o Microsoft Access , utilizam para garantir que os relacionamentos entre registros de tabelas relacionadas sejam válidos e que você não exclua ou altere, acidentalmente, dados relacionados.

Você não poderá excluir um cliente da tabela Clientes enquanto existirem pedidos feitos para este cliente na tabela Pedidos; não poderá excluir também um pedido da tabela Pedidos enquanto existirem itens de pedidos relacionados a este pedido na tabela Itens_Pedidos. A integridade referencial faz com o mecanismo do banco de dados reclame e gere um erro em tempo de execução , que deveremos tratar, avisando ao usuário que a ação que ele está tentando realizar não é permitida.

A tabela Frete

Precisaremos criar uma tabela onde iremos definir o preço do frete a ser para cada pedido. Iremos definir preços para cada região do país , podendo inclusive isentar o valor do frete em uma política promocional. A estrutura da tabela Frete é a seguinte:

  1. CodigoFrete - é o campo que identifica cada frete
  2. Estado - Indica a região para o qual definimos o valor do frete.
  3. PesoMinimo - O peso mínimo  para determinado valor de frete.
  4. PesoMaximo - O peso máximo para determinado valor de frete.
  5. Valor - O valor do frete definido.

A tabela Estados

A tabela Estados irá conter o nome , código e a sigla para cada estado. A sua estrutura é a seguinte:

  1. Estado - indica o nome do estado
  2. CodigoEstado - define o código para o estado. 
  3. UF - representa a sigla do estado

A Tabela Categorias

A tabela Categorias irá definir a classificação por categoria de nossos produtos. Como estaremos vendendo livros e Software , os softwares estarão catalogados na categoria Software e  cada livro deverá ser incluído em uma categoria relacionada com o assunto sobre o qual trata o livro. A estrutura da tabela é a seguinte:

  1. CategoriaID - é o código da categoria
  2. Descrição - define a categoria.

Como exemplo de categorias possíveis podemos ter:

Todas as tabelas criadas estarão armazenadas em nosso banco de dados , o qual denominamos ESoft.mdb. Com a criação das tabelas estabelecemos a estrutura básica onde iremos armazenar e gerenciar nossa Loja Virtual. É óbvio que  deveremos estar acompanhando toda a movimentação para permitir um suporte eficiente ao pós venda de nossos produtos. 


Copyright (c) 2000 - José Carlos Macoratti

1