.Tigas. Posted February 21, 2013 at 02:46 PM Report #496467 Posted February 21, 2013 at 02:46 PM 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á.
NunoDinis Posted February 21, 2013 at 04:13 PM Report #496486 Posted February 21, 2013 at 04:13 PM 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
veaoum Posted February 21, 2013 at 04:17 PM Report #496488 Posted February 21, 2013 at 04:17 PM 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
.Tigas. Posted February 21, 2013 at 08:29 PM Author Report #496528 Posted February 21, 2013 at 08:29 PM (edited) 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 February 21, 2013 at 08:37 PM by .Tigas.
veaoum Posted February 24, 2013 at 04:41 PM Report #496863 Posted February 24, 2013 at 04:41 PM 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: 1ª 123 @.com A1 1 string.empty 2º 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.
.Tigas. Posted February 26, 2013 at 03:48 PM Author Report #497077 Posted February 26, 2013 at 03:48 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now