Ir para conteúdo

POWERED BY:

Arquivado

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

Kamon Florentino Mesquita

Melhor maneira de apresentar preços

Recommended Posts

Estou terminando de desenvolver um banco de dados em MySQL pra gerenciar uma pequena loja e na tabela 'venda' estou com uma dúvida: os preços dos produtos da loja alteram com o tempo (logicamente), então para representar uma venda, pensei em duas possibilidades:

 

1) transformar o atributo 'preco' da tabela produtos em um tabela, aonde consta os preços dos produtos ao longo do tempo. A tabela 'venda' possui a data da venda, então eu poderia pegar o preço do produto que está mais próximo da data referente aquela venda. Nesta abordagem, o usuário não pode alterar nem excluir preços da tabela 'preco', apenas incluir novos preços. Porém acho que ter de fazer JOINS entre as tabelas 'venda', 'produto' e 'preco' e além disso pegar o preço de cada produto cuja data seja a mais próxima da data da venda, poderá ser bem lento. A vantagem seria que o preço só seria guardado uma vez.

 

2) guardar apenas o preço atual do produto e criar uma tabela 'venda_item' aonde constaria o preço do produto. Assim, quando o usuário altera o valor o preço do produto, isto não altera as vendas já feitas, já que estas contem o preço antigo do produto. Neste caso não seria necessário comprar datas nem evitar exclusão ou alteração de preços, mas o banco de dados gastaria bem mais espaço em disco (pelo menos eu acho).

 

Eu estou considerando a opção 2 mais viável, mas gostaria de saber a opinião de outros programadores, pra ter certeza.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grosso Modo

 

Manter uma coluna preco_atual em Produto.

 

Criar uma tabela Produto_historico_preco (produto,datahorade,datahoraate,preco)

 

Lembrando que a Venda em tese tem o preço, mas poderia haver um produto não comercializado durante um determinado preço.

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.