Itens de venda e Venda. Como relacionar?

3 respostas
S

Boa tarde…

meus amigos estou tentando elaborar um programa de vendas, mas não tô conseguindo relacionar os itens de venda com suas respectivas vendas.
A tabela de vendas vai ter os campos código, itensprod e preço total.
A tabela itens vai ter produto, quantidade e preco dos itens.
Coloquei o campo itensprod na tabela produtos como um vetor do tipo itens.
Se colocar um campo codigo na tabela itens como posso relaciona-los com o campo código da tabela produtos?

Se alguém puder me ajudar? tô precisando terminar esse projeto para Facul!

3 Respostas

herbertpimentel

Amigo você poderia ser um pouco mais claro?

voce fala de tabela, entao suponho que estas falando de um projeto de banco de dados. dessa forma porque nao modelar o banco como nas formas normais colocando na tabela “itens” uma foreign key (chave estrangeria) para a tabela de vendas ??? isso simplifica muito o modelo. alem de ser um padrão largamente utilizado em modelagens do tipo mestre detalhe de banco de dados.
Tenho mais familiaridade com o banco de dados postgre entao segue um script de como seria pra criar essas tabelas:

CREATE TABLE produtos (
id serial not null primary key,


);

CREATE TABLE vendas (
id serial not null primary key,
datavenda date not null default current_date,
valortotal decimal(10,2) not null default 0.00
);

CREATE TABLE itens (
id serial not null primary key,
fk_venda int4 not null REFERENCES vendas(id),
id_produto int4 not null REFERENCES produtos(id),
valor decimal(10,2) not null default 0.00
);

espero ter ajudado…

herbertpimentel

Me ocorreu agora que vc poderia tambem estar falando com relaçao a programaçao. e se referindo a tabelas como as classes. nessa casso a UML diz que um relacionamento desse tipo é uma composicao, pois os itens nao fazem sentido de existir sem a venda. Uma forma de relaciona-los é como a que vc fez. na classe venda colocar um Set (conjuto) de elementos da classe itens. Comumente tenho visto que tambem neste caso relaciona-se o elemento iten ao elemento venda atraves de um atributo em item. Nesse cenario teriamos algo como segue:

class Item
{
Produto Mercadoria; //indica que produto esta sendo vendido
int Quantidade; //indica em que quantidade esta sendo vendido
Venda VendaCorrente; //indica a venda a qual o item faz parte

//metodo para assossiar o item a venda

public assossiaVenda(Venda v)

{

this.Venda = v;

}

}

class Venda

{

ArrayList Itens;

Double ValorTotal;

Date DataVenda;
//metodo pra assossiar um item a venda

public addItem(Item mercadoria)

{

//usa o metodo de produto para assossiar a venda ao produto

mercadoria.assossiaVenda( this );

//assossia o produto a venda adicionando o na colecao de itens
this.Itens.add( mercadoria );

//incrementa o preco total da venda

this.ValorTotal += (mercadoria.Quantidade * mercadoria.Produto.Preco);

}

}

public class TestProg
{

public static void main(String args[])

{

//cria o objeto venda

Venda venda = new Venda();

venda.DataVenda = new Date();//data corrente

//vamos suporque so de criar os itens da venda ja temos que produto o item é.

Item item1 = new Item();
item.Quantidade = 5;

Item item2 = new Item();
item.Quantidade = 11;

Item item3 = new Item();
item.Quantidade = 4;

//Vamos assossiar o item a venda

venda.addItem( item1 );

venda.addItem( item2 );

venda.addItem( item3 );

}

}

bem claro que esse codigo é hipotético, eu achei que ficou meio enrrolado, mas é mais ou menos assim que funciona. hehehhe

Espero que ajude em alguma coisa…

  • os campos nao foram encapsulados por questao de praticidade no exemplo.
S

Vlw pela dica Herbert,
Consegui inserir os itens tanto no JList quanto no banco de dados.

Obrigado novamente e embora ainda esteja comecando estou à disposicão para qualquer ajuda

Criado 24 de maio de 2007
Ultima resposta 26 de mai. de 2007
Respostas 3
Participantes 2