涉及多个位置的库存 ERD

Inventory ERD that involves multiple locations

我正在尝试设计涉及库存的实体关系图。所有物品构成一个大库存,但它们可以分布在多个位置。例如:20 箱物品 A 在位置 1,5 箱物品 A 在位置 2。

如果他们点击一个项目,他们需要能够看到它在什么位置以及每个位置有多少。

如果他们点击某个位置,他们需要能够看到该位置有哪些物品以及数量。

我知道我的 table 之一将成为 'Item' 我知道我的另一个 table 将成为 'Location'

但是,我无法弄清楚如何使用连接 tables 和库存 table 从这里分支,它实际上跟踪每个项目以及每个位置的数量。

有人可以帮助我入门吗?任何事情都会有所帮助。

如果您单独记录项目,例如

Item (item_id PK, description)
Location (location_id PK, name)
Inventory (inv_id PK, item_id FK, location_id FK)

然后您可以在需要时查询总计:

SELECT l.location_id, l.name, i.item_id, i.description, COUNT(*)
FROM Inventory v
INNER JOIN Location l ON v.location_id = l.location_id
INNER JOIN Item i ON v.item_id = i.item_id
GROUP BY l.location_id, l.name, i.item_id, i.description

假设您想使用一个简化的系统来跟踪您的实际库存的当前快照,您可以使用这样的模型:

ITEMLOCATION 之间的交叉点跟踪特定位置的特定项目的手头数量(即您的库存)。

要获取所有位置的物品总库存,您可以使用此方法:

SELECT 
  I.ItemID
, I.Description
, SUM(Q.Quantity)
FROM ITEM I INNER JOIN ON_HAND Q
  ON I.ItemID = Q.ItemID
GROUP BY
  I.ItemID
, I.Description

但是请注意,在大多数实际情况下,保留物理库存的简单快照有点过于简单化。您还应该将我对 this question 的回答视为跟踪库存变动的更复杂替代方法。