Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
.Tigas.

Encomenda com vários produtos5

Recommended Posts

.Tigas.

Ora bem, estou a realizar a minha PAP e tenho uma dúvida numa tabela associativa chamada encomenda. Esta tabela tem 3 campos, 2 dos quais são chaves estrangeiras.

Encomenda:

n_encomenda (chave primária)

email (chave estrangeira, chave primária na tabela clientes)

nproduto (chave estrangeira, chave primária na tabela produtos)

A minha dúvida é a seguinte, querendo eu encomendar vários produtos de uma vez, imaginemos, querer encomendar 3 produtos. Como é que eu faço para registar uma encomenda e nessa mesma encomenda ter os 3 produtos? O campo nproduto supostamente só irá registar um produto. Eu não queria fazer uma encomenda diferente para cada produto.

Até agora achei uma solução mas não é bem a que quero. Envolve registar os nomes dos produtos num só campo e depois usar funções de strings para separar os nomes de cada produto de forma a lista-los no modo gráfico quando o cliente proceder à compra.

Obrigado desde já.

Share this post


Link to post
Share on other sites
NunoDinis

Podes na tabela xpto, guardar o n_encomenda e o nproduto. Quando fores fazer a listagem, listas os produtos daquele n_encomenda.

(Obs: email a chave primária ? Podes estar a correr um grande risco..)


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
veaoum

Porque nao crias mais um campo para teres uma chave primaria unica para cada produto e geres tu a tua n_enconenda de modo a puderes ter valires iguais desde que seja na mesma encomenda

Share this post


Link to post
Share on other sites
.Tigas.

Podes na tabela xpto, guardar o n_encomenda e o nproduto. Quando fores fazer a listagem, listas os produtos daquele n_encomenda.

(Obs: email a chave primária ? Podes estar a correr um grande risco..)

E qual seria a tabela xpto? Uma nova? De qualquer forma não estou a perceber. Esta tabela já é associativa, é suposto criar uma associativa por cima desta?

Quanto ao email, fiz assim porque eu que vejo mais em websites/lojas online para se registarem clientes. É sempre email/password e também porque quero que o email seja único e que não haja vários registos com o mesmo email. Talvez deva meter o código_cliente como chave primária sim (mas assim não sei como meter o email como único e não me apetece fazer uma chave composta porque depois lixa-me as associativas).

Porque nao crias mais um campo para teres uma chave primaria unica para cada produto e geres tu a tua n_enconenda de modo a puderes ter valires iguais desde que seja na mesma encomenda

Desculpa, também não percebi esta proposta. x)

Se calhar sou eu que não tenho algum conhecimento que vocês têm mas o que eu sei actualmente é que:

Nº encomenda 1

Nº produto 1

E fica assim. Não é possível adicionar mais items a essa encomenda. Se quiser um novo produto já é a encomenda 2. :s

Portanto, como já devem ter percebido (mas eu prefiro frisar isto para ficar claro o objectivo) eu pretendo fazer uma espécie de carrinho de compras. Visualmente o cliente irá checkar checkboxes de cada produto que irão ser listados numa só encomenda para ele confirmar.

Edited by .Tigas.

Share this post


Link to post
Share on other sites
veaoum

Deduzo que tenhas mais que uma Tabela por isso guarda a integridade do e-mail para a tabela de clientes. Para esta tabela Sugiro-te os seguintes campos.

  • cod (numeração automatica, chave primaria da tabela)
  • e-mail (se for este o dado que é unico na tabela cliente)
  • Nome produto
  • Quantidade
  • data finalizado (colocas este campo a null até ele finalizar as compras)

Tens mais campos que podes juntar mas que na minha opinião não serão fundamentais tipo (nº encomenda ou data_acrescent_carrinho)

vamos fazer uma simulação...... queres adicionar dois produtos chamados A1 e B2 o e-mail é @.com, nesta altura ficas com duas entradas nessa tabela:

  • 123
  • @.com
  • A1
  • 1
  • string.empty

  • 124
  • @.com
  • B1
  • 1
  • string.empty

Neste momento o @.com pode adicionar produtos, alterar quantidades ou até eliminar produtos isto enquanto o campo data finalizado estiver vazio. Quando o @.com fechar a encomenda colocas a data desse dia em todos os dados que sejam do @.com e que tenham a data finalizado vazia, bloqueando assim qualquer tipo de alteração por parte do @.com

Não sei se é o que procuras mas é o que eu faria no teu lugar.

Share this post


Link to post
Share on other sites
.Tigas.

Já tinha pensado nisso mas isso assim são duas encomendas diferentes. É verdade que se quero pesquisar a encomenda de um utilizador posso simplesmente procurar pela data e se for a mesma data posso supor que é a mesma encomenda. Mas até pode acontecer o caso em que o cliente faz uma encomenda num dia e mais tarde, nesse mais dia faz outra encomenda.

Mas sim, parece que é o melhor a fazer e é melhor não perder mais tempo nisto. Obrigado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.