数据库库存系统设计SQL

时间:2018-07-05 10:10:21

标签: sql database database-design

我正在重建当前的清单应用程序。我正在寻找改进。

当前情况: 我有一个可以存储在多个位置(1个或多个)的产品。甚至1个位置可以容纳多个(不同)产品。

所以我有这样的设计:

product:
 - id
 - description

location
 - id
 - name

stock:
 -id
 -product_id
 -location_id
 -amount

这就是我想要的。但现在是主要问题。计算每种产品的总库存需要很长时间。我有大约2万种产品和18K个地点。所以我想我可以将总库存保存在产品表中。这是一个不好的方法吗?

此外,我想保存库存来源和装运地点。所以我想为此做2张桌子。一种用于进货,一种用于进货。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

  

所以我想我可以将总库存保存在产品表中。这是一个不好的方法吗?

是的,这通常是一种不好的方法。相反,您应该只计算给定产品的值:

select sum(s.amount)
from stock s
where s.product_id = @product_id;

stock(product_id, amount)上有一个索引,它应该具有很好的性能。

为什么在product级别复制信息是不好的?问题在于维护数据。您必须在insert表上具有updatedeletestock的触发器。维护起来很麻烦。

在某些情况下,可能需要这种方法。但是只有20,000行,您应该能够在不使用触发器的情况下优化数据库。

相关问题