Sql 涉及多个地点的库存ERD

Sql 涉及多个地点的库存ERD,sql,database-design,architecture,erd,Sql,Database Design,Architecture,Erd,我试图设计一个涉及库存的实体关系图。所有物品构成一个大库存,但它们可以在多个地点分割。例如:20箱项目A位于位置1,5箱项目A位于位置2 如果他们点击一个项目,他们需要能够看到它在什么位置以及每个位置有多少 如果他们点击某个位置,他们需要能够看到该位置有哪些项目以及有多少项目 我知道我的一个表将是“Item”,我知道我的另一个表将是“Location” 然而,我很难弄清楚如何从这里分支出连接表和库存表,这些表实际上跟踪每个项目,以及每个位置有多少项目 有人能帮我开始吗。任何东西都会有帮助。如果您

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

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

如果他们点击某个位置,他们需要能够看到该位置有哪些项目以及有多少项目

我知道我的一个表将是“Item”,我知道我的另一个表将是“Location”

然而,我很难弄清楚如何从这里分支出连接表和库存表,这些表实际上跟踪每个项目,以及每个位置有多少项目


有人能帮我开始吗。任何东西都会有帮助。

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

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

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

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

假设您希望使用一个简单的系统来跟踪物理库存的当前快照,您可以使用如下模型:

项目
位置
之间的交叉点跟踪特定位置特定项目的现存量(即您的库存)

要获取所有位置的项目总库存,您可以使用以下方法:

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

然而,请注意,在大多数实际场景中,保存物理库存的简单快照有点过于简单。你也应该把我的答案看作是一个更为复杂的追踪库存变动的选择。

< P>假设你想用一个简化的系统来追踪你的物理库存的当前快照,你可以使用这样的模型:

项目
位置
之间的交叉点跟踪特定位置特定项目的现存量(即您的库存)

要获取所有位置的项目总库存,您可以使用以下方法:

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

然而,请注意,在大多数实际场景中,保存物理库存的简单快照有点过于简单。你也应该把我的回答看作是一个更为复杂的追踪存货变动的选择。

谢谢你的解释。因此,联接表管理的数量是完美的。当我设计一个ERD时,我有时会忘记我能用SQL做的一切。就您更复杂的示例而言,在项目、库存和位置方面是否有任何区别?@BlakeRivell-与更复杂的模型的关键区别在于,您没有在其中记录数量的静态计数。取而代之的是,你记录输入和输出,在某个时间点获得手头的数量是一个将所有输入和输出相加的问题。这为您提供了更多信息(任何时间点的数量、物品的来源/去向),因此您可以将实际的实际库存盘点与数据进行核对。根据您所做的工作,可能不需要这种额外的复杂性,但很可能需要。除此之外,我在另一篇帖子上留下了一个问题,关于如何将物品租赁和物品销售合并到这样的ERD中。主要区别在于租赁有一个归还日期,用户需要能够看到有多少可用和正在使用以及由谁提供。感谢您的解释。因此,联接表管理的数量是完美的。当我设计一个ERD时,我有时会忘记我能用SQL做的一切。就您更复杂的示例而言,在项目、库存和位置方面是否有任何区别?@BlakeRivell-与更复杂的模型的关键区别在于,您没有在其中记录数量的静态计数。取而代之的是,你记录输入和输出,在某个时间点获得手头的数量是一个将所有输入和输出相加的问题。这为您提供了更多信息(任何时间点的数量、物品的来源/去向),因此您可以将实际的实际库存盘点与数据进行核对。根据您所做的工作,可能不需要这种额外的复杂性,但很可能需要。除此之外,我在另一篇帖子上留下了一个问题,关于如何将物品租赁和物品销售合并到这样的ERD中。主要区别在于租赁有一个归还日期,用户需要能够看到有多少可用的和正在使用的以及由谁提供的。