Produto composto

ola amigos estou com dificuldades na analise de um sistema de controle de estoque onde possui produtos composto.
como faço? coloco produto agregando produto ? mas como ficaria o banco de dados ?

Procura o pattern Composite. Acho que ajuda bastante no seu caso! :smiley:

procurei , li e nao entendi, nao sei como aplicar. Voce que leu, entendeu e sabe como aplicar poderia me ajudar ?

Imagina um motor de carro… Ele é composto de varias peças mas o motor tambem pode ser considerado uma peça.

No seu caso existe o produto, que pode ser simples ou um produto composto de varios outros produtos. Nesse caso, voce possui uma superclasse Produto e as implementaçoes que podem ser arroz, feijao ou que quer que seja. Se voce tiver um produto Prato Feito, ele possui um “subproduto” arroz e feijao. Consegui me expressar bem??

Na implementação, temos uma colecao em produto que diz quais os subprodutos dele. Em banco de dados isso é uma tabela de relacionamentos de produto pra produto com uma PK composta por 2 PKs de produto. Só é importante evitar ciclos nessa história toda.

[quote=nicholas.bittencourt]
Em banco de dados isso é uma tabela de relacionamentos de produto pra produto com uma PK composta por 2 PKs de produto. Só é importante evitar ciclos nessa história toda.[/quote]

não intendi a parte das 2 Pks ?

seria isto ?



pq em vez de criar uma 2ª tabela
não faz o relacionamento com ela mesma…

produto tem muitos produto

onde FK de produto pode ser null

??

ou naum é uma boa abordagem ?

[quote=feltraco]pq em vez de criar uma 2ª tabela
não faz o relacionamento com ela mesma…

produto tem muitos produto

onde FK de produto pode ser null

??

ou naum é uma boa abordagem ?[/quote]

se eu relacionar tabela produto com tabela produto entao mudara uma regra de negocio:
um produto pode possuir 0 ou muitos produtos para um produto deve possuir no minimo 1 e no maximo muitos produtos

pois a tabela produto tera duas chaves primarias ( o cod do produto e o cod prod composto ), e como nao pode haver chave primaria null entao fudeu

[quote=umlhard][quote=feltraco]pq em vez de criar uma 2ª tabela
não faz o relacionamento com ela mesma…

produto tem muitos produto

onde FK de produto pode ser null

??

ou naum é uma boa abordagem ?[/quote]

se eu relacionar tabela produto com tabela produto entao mudara uma regra de negocio:
um produto pode possuir 0 ou muitos produtos para um produto deve possuir no minimo 1 e no maximo muitos produtos

pois a tabela produto tera duas chaves primarias ( o cod do produto e o cod prod composto ), e como nao pode haver chave primaria null entao fudeu[/quote]

não…

a tebala vai possuir uma PK e uma FK

ai como falei vc coloca a FK como aceitando null (o que é possícel)

assim um produto pode ter 0 ou * produto

nao tem como pois dessa forma a regra de negocio ficaria :

um produto pode ser composto 0 e no maximo 1 produto

alguma solucao pessoal ?

umlhard,

Acho que é isso mesmo que pensei no Banco de Dados. Só nao entendi o que seria a classe GrupoDeProdutos, que não tem mais necessidade uma vez que o produto pode ser um grupo dele mesmo.

[quote=nicholas.bittencourt]umlhard,

Acho que é isso mesmo que pensei no Banco de Dados. Só nao entendi o que seria a classe GrupoDeProdutos, que não tem mais necessidade uma vez que o produto pode ser um grupo dele mesmo.[/quote]

grupo de produto eh uma categoria.exemplo: impressoras, scanners, etc.

entao esta correto o diagrama que passei?

[quote=umlhard][quote]
não…

a tebala vai possuir uma PK e uma FK

ai como falei vc coloca a FK como aceitando null (o que é possícel)

assim um produto pode ter 0 ou * produto

[/quote]

nao tem como pois dessa forma a regra de negocio ficaria :

um produto pode ser composto 0 e no maximo 1 produto
[/quote]

não…
um produto pode ter 0 ou * produto

um produto tem um produto(que sendo um produto pode ter outro produto) e assim por diante…

olhando o seu modelo… vai ficar mt parecido…

[quote]

não…
um produto pode ter 0 ou * produto

um produto tem um produto(que sendo um produto pode ter outro produto) e assim por diante…

olhando o seu modelo… vai ficar mt parecido…[/quote]

não entendi sua visao. poderia passa-la em diagrama ? vc viu o diagrama do banco de dados em anexo ?

assim eu to falando

ve ai qq vc acha …

[quote=feltraco]assim eu to falando

ve ai qq vc acha …[/quote]

entao amigo desse jeito o maximo que poderei fazer eh cadastrar um produto composto, como ja dito antes isso ficaria ( um produto pode ter 0 e no maximo 1 produto composto ) vc nao concorda comigo? faz o seguinte:

cadastre 2 produtos ( A, B ), cadastre agora um produto C que sera composto de A e B, entendeu??? nao tem como…

malz… agora intendi o que vc quis dizer…

a -> b
a -> c
a -> d

enquanto eu estava fazendo

a -> b -> c -> d

ambos estamos certos…
soh que para o problema sugerido o seu soluciona

:wink: