Dúvida de como armazenar novas compras no banco de dados

Pessoal, gostaria de ter algumas sugestões de vocês para como resolver uma situação que estou me deparando:

No meu sistema existe uma tabela com os produtos de uma determinada loja:

Tabela Produtos

Campos: ID , Nome Produto, Valor de Compra, Valor de Venda, Estoque

Imaginando que o dano da loja comprou e já cadastrou 100 unidades do produto X na tabela Produtos. Cada item custou 10 reais. Então, alguns dias depois, a fornecedora desse mesmo produto X faz uma promoção muito boa (com um preço menor do que a compra anterior) e o dono da loja resolve comprar outros 200 itens do mesmo produto.

Ou seja, agora existem duas compras do mesmo item, com preços de compra diferentes.

Como isso deve ser lançado na tabela PRODUTOS? Como ficaria o campo “preço de compra” visto que foram produtos comprados por preços diferentes? É melhor usar uma tabela auxiliar pra armazenar os dados?

Agradeço a ajuda de vocês!

normalmente a logica de negocios indica que os precos estao associados as compras e vendas. Tem vezes que voce vai cadastrar produtos iguais com caracteristicas diferentes, por exemplo datas de validade. Cada caso é um caso, na sua breve descricao a sugestao que dou é colocar o preco de compra e venda na entidade de compra e venda. no produto colocar informacoes que forem uteis referente ao produto, como preco medio de custo, preco minimo de venda, preco maximo de venda, etc…

Obrigado pela ajuda, evefuji,

Eu imaginei que o melhor seria justamente colocar as informações monetárias na tabela de VENDAS, por isso já tenho esses dados cadastrados na tabela de VENDAS também.

Mas com essa estrutura também surgiu outra dúvida: e quando eu quiser saber o preço atual de determinado produto? Onde é melhor guardar essa informação? Penso que talvez nesse caso a melhor opção é a tabela PRODUTOS, mesmo tentando deixar informações monetárias separadas dessa tabela.

Existe alguma opção melhor?

novamente isso vai variar de acordo com sua necessidade. Pode ser que você precise de uma tabela histórica de preços, pode ser que você armazene “preço normal de venda” e “preço mínimo de venda” na entidade produto e com isso permita ao vendedor “dar descontos”…

O mais comum é ter um preço de venda na entidade produto, já vi alguns softwares que a entidade produto tinha 10 preços diferentes (cada um para um tipo específico de cliente) e isso não foi normalizado tanto para simplificar a manutenção quanto para melhorar o desempenho (reduz “1 cruzamento” para obter os preços).