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. 

 

Para criar uma loja virtual usando ASP .NET acompanhe o curso no link : 

ASP .NET - Criando um site completo com carrinho de compras (Curso)

 

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. 

Próxima parte

Para criar uma loja virtual usando ASP .NET acompanhe o curso no link :  ASP .NET - Criando um site completo com carrinho de compras (Curso)

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti