DataModel para entregas parciais em quantidades de produto
Considere o seguinte modelo de dados. Com este modelo, parece-me que só poderíamos fazer entregas parciais com toda a quantidade encomendada para um produto.
o que devemos mudar para permitir a entrega parcial das quantidades do produto?
por exemplo, diga uma ordem que contenha 50 unidades do produto a e 50 unidades do produto B .
uma primeira entrega parcial poderia enviar ao cliente 25 unidades de produto A e 25 unidades do produto B .
Uma segunda entrega parcial poderia enviar para o cliente 25 unidades do produto A, e, finalmente, uma última entrega 25 unidades do produto B.
Nota: clique aqui para obter o modelo de dados de exemplo
1 answers
Ele Se encaixa no modelo, temos uma a muitas relações entre orders
e shipments
tabelas. Então, costuras envio parcial é conceptualmente possível.
Terá de adicionar o campo item-quantity
às tabelas shipment-items
e return-items
, mostrando quantos itens por produto estão preenchidos.
a integridade dos dados também deve ser considerada.
Se um produto é único por ordem, quero dizer se você tem uma restrição única de {product_id, order_id}
dentro da tabela order-items
, então:
SUM (shipment-items.item-quantity) grouped by order_item_id
-
SUM (return-items.item-quantity) grouped by order_item_id
<=
order_items.order-item-quantity
Where order_items.order_item_id = shipment-items.order_item_id
Tem de ser verificado. dentro da sua lógica de aplicação quando um envio é criado.
sugestão: a restrição acima mostra todos os itens enviados de um produto de uma ordem menos todos os itens de retorno do produto da ordem, precisa ser menor do que a quantidade ordenada.