首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库存管理-需要建议

库存管理-需要建议
EN

Database Administration用户
提问于 2018-03-15 13:32:03
回答 2查看 286关注 0票数 2

我试图根据客户的要求制作一个库存管理软件,根据产品类型,我按重量或质量购买产品。它的数据库结构如下。

代码语言:javascript
复制
User { id, name, address, role (Customer, Vendor, Labor etc)}
Product {id, name, type}

产品类型:

  1. 板材
  2. 圆(切割后)
  3. 轧制圆圈(轧制后)
  4. 暗圆(抛光后)
  5. 准备圆(波兰语后)

问题是我购买的产品可能要经过四个过程:

  1. 切割
  2. 滚压
  3. 模塑
  4. 波兰人

以上过程取决于我所购买的产品类型。如果我购买原材料,那么我可以把它给工人,由他们来切割,然后还给我(也就是切割)。在这个过程中,一些材料会被废掉。正如你所看到的,如果我买的是按重量购买的板材,那么它就不再用于切割和旋转(产品类型2)。产品类型2是按质量计算的。

我可以要求客户把他们收到的数量大约放进去,但问题是我如何管理库存,多少是留在劳动场所。

考虑到我是经销商,我从多个供应商购买产品,产品分为几种类型,上面已经提到了。每个销售商都有自己的产品价格。

购买后,产品可以加工,也可以出售。如果要进行加工,将有4个阶段,根据客户的要求,他可以决定在任何阶段销售产品。例如:

  1. 客户购买/购买按公斤计算的产品。
  2. 该产品用于多个零件的切割(第1阶段),例如,如果我有100公斤的原料,我给了50公斤的labour1,给了20公斤的labour2,剩下的给了labour3,在这个阶段,产品变成了多个块(由于在这个过程中产生的废料,每一次产生的pcs数都不是相同的,所以我现在无法用公式计算出pcs的数量,我们现在可以预计大约的pcs数可能会变化在+/- 10到100之间)。
  3. 现在劳动力将把pc分送给我,例如,Labour1获得了50公斤的原材料,转化了1000台,他把这些pc发给了我,即昨天发送的500台pc,昨天发送的200台pc,昨天发送的100 pc,今天剩下的pc仍在labour1侧。

我面临的

问题

  1. 我无法管理我给工人的存货。
  2. 在其结束时还剩下多少(即劳动结束)
  3. 如何为销售目的维护库存细节不是通过一个表来管理的。

我到现在为止所做的一切

我创建了下面的模式来解决我的问题,但我不确定根据DBMS的规则它是否正确。

代码语言:javascript
复制
Purchase 
{ id, vendor_id, prod_id, weight, qty, focusOn (weight / qty), 
  rate, amount, remainingWeight, remainingQty }

Job 
{ id, purchase_id, prod_id, labour_id, weight, qty, focusOn (weight / qty) }

Returns 
{ id, job_id, prod_id, weight, qty }

专注于参数检查,检查是否检查退货的重量或数量,以确保责任。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2018-03-22 12:20:02

你可以把它当作复式记账。每个用户都有一个“帐户”为每个产品,您的信用和借方转帐。你在网络中间扮演“银行”的角色。每个帐户的余额都是库存,无论是手头的出售还是外出工作.

桌子应该是这样的:

代码语言:javascript
复制
Participant
  ParticipantId
  <other columns>

我不特别称它为“用户”,因为参与者不一定是人。你也会有一个参与者的记录。

代码语言:javascript
复制
Product
  ProductId
  UnitOfMeasure    -- will be "kilogram" or "piece"/"quantity"

你提到的五个,每一行一排,通过准备好的圆圈。

代码语言:javascript
复制
Account
  AccountId
  ParticipantId
  ProductIt

根据您的描述,每个参与者都需要每个产品的帐户,因为没有从例如纸张到圆圈的直接翻译。即使是从一个圆圈到另一个滚动圆,在处理过程中也可能有浪费,所以发送100个单元并不意味着总是返回100个单元。这很像拥有一些美元和日元--你可以相互转换,但即期汇率会波动。每个银行都必须持有自己的银行账户。

您自己将有一个帐户中的五个产品,您所处理的。这代表你的货架上的任何时刻,等待进一步的工作或被出售的物品。

代码语言:javascript
复制
Transfer
  TransferId
  FromAccountId
  ToAccountId
  <probably date, time, recipient etc.>
  Quantity

这里的一行记录了特定产品的给定数量从一个收件人到另一个收件人的移动。您从相应的帐户中了解参与者和产品。从产品中,您可以确定该数量是否代表一公斤或一项。

为了便于处理,您可能希望在每个帐户下复制此操作。这需要另一张桌子:

代码语言:javascript
复制
AccountTransaction
  AccountTransactionId
  AccountId
  TransferId
  DebitAmount
  CreditAmount

对于每次转帐,AccountTransaction中将有两行-- FromAccount和ToAccount各行一行;一行为借方,另一列为贷方。

这些年来,这个表可能会变得很大,查询也会很慢。间隔期(年度帐目?)可能值得将其滚动到一个新的起始余额,并将以前的事务归档到另一个表中。

回答你的问题:

我无法管理我给工人的存货。

该参与者的AccountTransactions之和。

在其结束时还剩下多少(即劳动结束)

嗯,你知道你转了多少钱(上一个问题),但由于你没有很强的转化率或流失率,你不知道他们的车间里到底有多少钱,多少已经报废了。为此,工人必须直接报告废料和浪费情况。

如何为销售目的维护库存细节不是通过一个表来管理的。

您的参与者ID的AccountTransaction表之和-这些帐户记录分配给您的单位,大概,坐在您的仓库。

道歉:我上次写会计软件已经有一段时间了。现在很多细节都有点模糊。我没有能力修改所有的细节,并键入一个完全完善的答案。有大量的在线资源可以更充分地解释它。一些技巧可能需要围绕外键在传输和AccountBalance。希望这是足够清楚的指出你的正确方向。祝好运。

票数 2
EN

Database Administration用户

发布于 2018-03-26 04:10:39

(由于在此过程中产生的废料,pcs的数量每次都不一样,因此我无法按公式计算pcs的数量,从现在起,我们可以预料到大约的pcs数可能会变化为+/- 10到100)。

产生的废料不是固定的,因为产品质量或尺寸不固定。

因为这个原因很难确定,

他们最后还剩下多少(即劳动结束)。

代码语言:javascript
复制
Product Type

TypeID
ProductType


Product Process

ProcessID
ProcessName

Product Master

ProductID
ProductName


ProductVendorMapping

ProductID
VendorID
TypeID
Qty
UoMID
Cost

ProductStage

PStageID
ProductID
ProcessID
ProcessDate

一旦任何产品被购买,这个表将根据那个product.Thereafter的阶段有条目,它将在完成每个阶段之后继续更新。

代码语言:javascript
复制
ProductTaskName

TaskID
Taskname 
ProductID
TaskDate

假设有新的产品1到达,该产品将分配给加工工人。

比如说,在一个月后,这项任务就结束了,同一产品的新到货将被加工。

那么用户和系统将如何区分这两个任务,因为产品和劳动是一样的。

因此,在部署到劳动之前,先创造新的任务,然后再着手劳动。

代码语言:javascript
复制
ProductLabourMapping

ProductLabour id int identity(1,1)
ProductID
LabourID
TaskID
QtyLentToLabour
UoMID
StartDate
PieceDimension (to be discuss)
PieceReturn int nullable
ReturnDate nullable
ScrapWeight nullable
ScrapUOMID nullable
isComplete bit default(0)

由于没有固定公式(如您所说的),您必须手动记录劳动和系统之间的每一项事务。

Labour1获得50公斤的产品1。所以新的条目在这个表中。此后,在第一天发送了500台pcs机,因此更新相同的任务。

一旦所有的劳动都完成了相同的任务,Iscomplete =1。在这个阶段,productstage表可以更新。

代码语言:javascript
复制
ProductTransaction

ProductID
CustomerID
TransactionDate
Cost
ETC

这个表记录了产品的销售情况。

当原材料交给工人时,你会怎么卖呢?

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/200357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档