数据库库存系统设计SQL

问题描述 投票:0回答:1

我正在重建当前的库存应用程序。我正在寻求改进。

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

所以我有这个设计:

product:
 - id
 - description

location
 - id
 - name

stock:
 -id
 -product_id
 -location_id
 -amount

这就是我想要的。但现在是主要问题。计算每件产品的总库存需要很长时间。我有大约20K产品和18K位置。所以我想我可以在产品表中保存总库存。这是一个糟糕的方法吗?

此外,我想保存库存来源以及库存地点。所以我想为它制作2张桌子。一个用于传入,一个用于传出库存。有更好的解决方案吗?

sql database database-design
1个回答
2
投票

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

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

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

有了stock(product_id, amount)的索引,这应该有非常好的表现。

为什么重复product级别的信息不好?问题是维护数据。你必须在insert表上有updates,deletes和stocks的触发器。维护起来很麻烦。

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

© www.soinside.com 2019 - 2024. All rights reserved.