我为药店设计了一个分贝,它将销售药品批发和零售。我把每一条药片,胶囊和药瓶分别存放在一个单独的领域进行零售销售。有什么更好的方法吗?作为一名程序员,我想不出是否有必要在订购表中存储每个客户支付的金额。是否有必要在单独的桌子上有进进出出存货?这是我的数据库:

这个数据库设计会有什么问题吗?请提出一个更好的方法。

发布于 2016-09-09 11:37:47
您可能需要考虑将产品抽象到SKU中以获得订单细节。与其让订单细节显示出售了哪一种特定的药丸,不如更笼统地显示出售了哪种药物。这样做的原因是,例如,你可能会卖出100粒某种类型的药丸。也许你只剩下40批,所以你用另一批中的60来填充订单。这将显示在销售收据上的两个订单细节,这将不是理想的,因为客户不想或不需要知道这个细节。
从实际的产品批次中抽象产品列表的另一个优点是,您可以获得一个简单的产品列表,而无需重复。这只是一个很好的数据库规范化。产品名称和产品批号具有不同的功能依赖性,因此它们不属于第三范式(3NF)下的同一表。
您可以而且应该有库存移动记录,记录用于填充每个订单的特定库存。
您应该将实际支付的金额与订单详细信息一起存储。这是因为管理系统更新项目的价格可能会随着时间的推移而变化,因此如果不存储实际支付的价格,可能会丢失信息。类似地,您可能决定以促销价格出售,如果您只存储正常价格(或管理系统更新项目),将丢失信息。
我建议不要把存货清点放在单独的桌子上。所有库存变动都应放在一个表中,按照旧的会计方法有两个数量列(入/出),或者最好是按照新的电算化会计方法,有正数和负数的单一数量栏。将库存保存在一个表中可以大大降低代码复杂性。
https://dba.stackexchange.com/questions/146735
复制相似问题