Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marisa

modelagem

Recommended Posts

Oi gente,gerencio um site de compra aqui na minha empresa que está modelado da seguinte forma:Tabelas:Pedido, PedidoProduto, ProdutoA tabela PedidoProduto recebe cada código do produto adicionado pela pessoa ao carrinho, assim como sua quantidade. Minha duvida é a seguinte, estou precisando criar uns kits promocionais, onde os donos da rede de vendas poderam inserir vários produtos nesse kit com preços mais baixos. Pensei em criar outras duas tabelas:KitPromocionais e KitProduto onde a tabela KitProduto receberia cada código de produto inserido no kit e o código do kit ao qual o produto está sendo inserido. Porém me deparei com um problema que não estou conseguindo resolver. Quando um cliente adicionar um kit ao seu carrinho de compra, onde devo guardar essa informação? Realmente não estou conseguindo visualizar a melhor solução. Se alguém puder me dar uma ajuda, agradeceria muito!!Marisa Travassos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma das formas que poderia fazer é criar um pouco diferente, criando uma tabela ProdutoKit, ou seja, um Kit é um produto, sendo que ela pode ser um ProdutoKit, não sei se entendeu, se quiser posso dar mais detalhes...

Acho que fazendo um exemplo seria mais fácil...

 

 

Cadastro de Produto

 

Codigo	Nome1		 Monitor2		 Mouse3		 Teclado 10		Kit de Natal15		Kit de Ano NovoNo caso para o produto 10 irá existir um ProdutoKit, algo do tipo:Cadastro de Produto KitCodigoProduto  CodigoProdutoKit   Quantidade1					 10			  13					 10			  22					 15			  53					 15			  1

É um idéia de como poderia ser feito, claro que existe ainda outras formas....

Sendo que desta forma você pode referenciar um "material" como sendo um item do pedido, mas é claro que este material é um kit contendo os itens na tabela ProdutoKit.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pelo que entendi sua idéia seria cadastrar os kits na própria tabela Produto e depois fazer uma tabela (no caso a ProdutoKit) que relacione os códigos de kit com os códigos de produtos simples, é isso?

Seria esse um caso de auto-relacionamento? Como ficaria os relacionamentos entre essas tabelas? Vamos dizer que eu tenha essas 2 tabelas como você sugeriu:

 

Produto

Codigo

Nome

 

e

 

ProdutoKit

CodigoProduto

CodigoKit

Quantidade

 

O Codigo da tabela Produto se relacionaria com o CodigoProduto e com o Codigo Kit da tabela ProdutoKit em relacionamentos de 1 para n? Seria isso? É possível que 2 tabelas se relacionem 2 vezes entre si dessa forma?

Se for possível me esclarecer essas dúvidas me seria de grande ajuda! Muito obrigada desde já,

Marisa Travassos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é possível ter este tipo de relacionamente, visto que serão campos diferentes a ter a chave, no caso na tabela ProdutoKit você terá como chave primária CodigoProduto e CodigoKit, sendo que nunca vai ter o mesmo produto para o mesmo kit mais de uma vez, e ainda criando duas chaves estrangeiras para a tabela produto, uma para o campo CodigoProduto e outra para CodigoKit, claro que somente irá conseguir lançar os kits depois que o registro estiver salvo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa, ainda estou um pouco confusa, desculpe mas é porque realmente nunca usei esse tipo de relacionamento... Eu teria então 2 chaves primárias na tabela ProdutoKit? O Access não está me deixando criar duas chaves primárias na mesma tabela. Quando eu crio uma a outra some. E depois, como esses campos poderiam ser chaves primárias se eles aceitam valores repetidos, uma vez que o mesmo kit vai receber vários produtos assim como um mesmo produto pode fazer parte de vários kits? E depois, essas 2 chaves estrangeiras sairiam desses dois campos e iriam pro mesmo campo Codigo da tabela produto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria duas chaves primárias, e sim uma chave primária dupla, no caso isso é apenas para garantir que para o mesmo kit não se tenha o mesmo produto cadastrado mais de uma vez, as chaves estrangeiras apenas vão servir para a integridade, e ambas apontam para a mesma tabela, exemplo de criação da tabela:

 

create table ProdutoKit (nuproduto integer not null,nuprodutokit integer not null,nuquantidade double precision)GOalter table ProdutoKit  add constraint pk_produtokit  primary key (nuproduto, nuprodutokit)GOalter table ProdutoKit  add constraint fk_produtokit_produto  foreign key (nuproduto)  references produtoGOalter table ProdutoKit  add constraint fk_produtokit_produtoKit  foreign key (nuprodutokit)  references produtoGO

No caso criei em SQLServer, no access não sei muito bem como você poderia criar a chave primaria com dois campos... Exemplo de SQL depois para consultar relacionando as tabelas e trazendo as descrições:

 

select produtoKitDesc.nuproduto CodProdKit, produtoKitDesc.nmproduto NomeProdKit,produto.nuproduto, produto.nmproduto, produtoKit.nuquantidadefrom produto, produto ProdutoKitDesc, produtoKitwhere produto.nuproduto = produtokit.nuprodutoand produtokitdesc.nuproduto = produtokit.nuprodutokitorder by produtoKitDesc.nmproduto, produto.nmproduto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,caramba, ajudou muito!! Deu certo sim, resolveu o problema totalmente. Muito obrigada! Só por curiosidade, fiquei pensando se aquela consulta que você me passou poderia ter sido feita com INNER JOIN... Seria possível? Valeu e até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.