数据库设计:具有多个项目单位的库存批发和零售

问题描述

我为药品(药房)商店设计了一个数据库,它将批发和零售销售药品。有些药物可以以多个单位出售,例如药条、胶囊和小瓶。基本上,每种药物可以以多个单位出售。这是我的数据库

enter image description here

我有一个inventory_movement 记录,其中记录了用于填写每个订单的特定库存。如果一个药物的基本单位设置为小瓶,并且它在inventory_movement中有一些小瓶的记录,经过一段时间后,我想以胶囊为单位出售该药物,这时候我如何将其记录到inventory_movement ?我如何从库存中计算库存?

如果我更新 item_unit 记录以设置如下数据:

enter image description here

我需要扫描整个inventory_mocement表以将基本单位更新为新单位(capsule)并使用乘数重新计算数量。这合理吗?

我的设计有什么缺陷吗?有没有人有任何想法(或例子)?

解决方法

“我如何将其记录到inventory_movement?”

只需使用 appr 预订全部数量(在本例中为 7)。 unit_id,然后将其与另一个 unit_id 一起添加回来。

我如何从库存中计算库存?

如果我是你,我会只为股票设置一个新表(例如item_id,unit_id,qty),每次移动我都会根据数量和unit_id减少/增加股票。为此,我也会像这样更改 item_unit 表:id,item_id,multiplier,base_unit (bool)。而 item_unit 表将只是一个主表,其中包含数据,其中包含打包多少件。

因此,您无需查看变动表,您可以根据 item_unit 表和 appr.乘数。