[firebase-br] Composição de produtos, select recursivos e afins...
Lucas Zampar
lucas.zampar em gmail.com
Ter Abr 28 12:42:51 -03 2009
Bom dia senhores,
Estou tentando resolver um problema há vários tinhas porém sem sucesso.
Na empresa em que trabalho, vendemos produtos que podem ser compostos
ou simplesmente comerciais.
O problema está sendo eu criar a árvore de relacionamento de produtos
compostos.
Por exemplo:
Um HD é um produto tipo = "C", pois é comercial e não tem estrutura de
composição.
Uma MEM RAM é um produto tipo = "C", pois é comercial e não tem
estrutura de composição.
Um GABINETE é um produto tipo = "C", pois é comercial e não tem
estrutura de composição.
Os produtos manufaturados são do tipo = "M", exemplo:
Já um COMPUTADOR MOD1 tem em sua composição:
1 HD
2 MEM RAM
1 GABINETE
Um COMPUTADOR MOD2 tem em sua composição:
2 HD
1 MEM RAM
1 GABINETE
Já um SERVIDOR tem sua composição:
1 COMPUDATOR MOD1
2 HD
2 MEM RAM
Observem que tenho de ter n níveis e adicionar vários produtos tanto
comerciais, como compostos.
Sabendo que todos produtos compostos são feitos de comerciais...
Segue em anexo as DDL das minhas duas tabelas:
CREATE TABLE PRODUTO (
CODIGO INTEGER NOT NULL,
TIPO VARCHAR(1),
CODPRODUTO VARCHAR(16),
DESCRICAO VARCHAR(255),
QUANTIDADEATUAL NUMERIC(6,2),
QUANTIDADEMINIMA NUMERIC(6,2),
PESO NUMERIC(3,2),
CUSTOCOMPRA NUMERIC(9,3),
CUSTOFINAL NUMERIC(9,3),
PRECOVENDA NUMERIC(9,3),
IPI NUMERIC(5,2),
MARKUP NUMERIC(5,2),
MEDIDAS VARCHAR(15),
LOCALIZACAO VARCHAR(4),
OBS VARCHAR(255),
DETALHAMENTOPROPOSTA BLOB SUB_TYPE 1 SEGMENT SIZE 16384,
FOTOS BLOB SUB_TYPE 1 SEGMENT SIZE 16384,
UNIDADE SMALLINT,
GRUPO SMALLINT
);
Minha tabela de relacionamentos:
CREATE TABLE PRODUTOCOMPOSICAO (
CODIGO INTEGER NOT NULL,
CODIGOPRODUTO INTEGER NOT NULL,
CODIGOPRODUTOADICIONADO INTEGER NOT NULL,
QUANTIDADE NUMERIC(9,3) NOT NULL
);
1) Aí pergunto a vocês, estão estruturadas corretamente as minhas tabelas?
2) Como fazer para que o custo final de um produto composto sempre se
mantenha atualizado através dos custos dos componentes comerciais?
3) Como realizar um select que me mostre a raiz de todos os componentes
que compõem um produto composto?
Ex:
Composição do Servidor
- 1 Computador MOD 1
-- 1 HD
-- 2 MEM RAM
-- GABINENTE
- 2 HD
- MEM HD
Atualmente tenho uma tabela que mantém o cadastro de produtos e outra
que mantém o relacionamento entre eles.
O preço de venda dos produtos compostos são calculados toda vez que é
alterada a estrutura da tabela de relacionamento através de um trigger.
Agradeceria muito quem pudesse me dar uma ajuda!
E desculpem pelo longo e-mail!
Atenciosamente,
Lucas Zampar Bernardi
Mais detalhes sobre a lista de discussão lista