1

我想为本地计算机硬件非营利组织制作一个关系数据库系统。我想弄清楚如何实现两个相互关联的功能。首先,我们需要管理我们的零件库存,其次,我们需要跟踪计算机系统的捐赠,因为它们进入我们,以及我们将它们发放出去。

首先,我们有一个简单的零件清单。我们不需要跟踪单个零件(无论如何我们不能),所以我要建模的是计数。我的想法是有不同的零件“箱”,只有一个简单的计数。因此,如果我们将视频卡从其“库存”箱移动到“回收”箱,我想要一个-1 到视频卡库存,+1 到视频卡回收。bin 可以根据需要进行更明确的定义,例如 pci-video-cards、agp-video-cards 等。或者,如果我们计算库存,我们可能需要从库存中执行 -3 和 +3 到 '收缩”。

这样做的目的是随时知道我们有多少显卡,多少内存条等等。一个垃圾箱的两个方面将是它里面有什么样的部分(无论具体程度如何,例如 'old-misc-card' 或 '32MB-3.3v-agp-video' ),以及 bin 的用途,例如 'donation-in'、'inventory'、'recycling'、'store'、'缩水”等。

另外,我们希望看到零件的潮起潮落的趋势,以及历史数据,所以我们需要随时查询库存。

那么我将如何设计表来处理呢?我想它会像一个复式分类帐。我可能有一张名为“BinTransactions”的表,其中有 from_bin、to_bin 和数量。金额将是一个正整数,如果我想编写一个查询,看看将从库存中取出多少,我会将其设为负数。类似于“SELECT SUM(amount) * -1 FROM BinTransactions WHERE from_bin = 'inventory' AND time_period = ...”?

第二部分是计算机系统本身。无论处于何种状态,它们都是以捐赠的形式进入的。零件可以从它们中取出并放入库存或回收利用;零件可以从库存中取出并放入计算机中。我想我可以做一台电脑

一台计算机最终作为一种授权离开了我们的系统,但这种结构有一层嵌套。它是计算机中的计算机部件的集合,但也有显示器、键盘、鼠标,也许还有扬声器。并且大笔拨款可能是几个系统,还带有网络设备。是否应该“嵌套”分组的逻辑层次结构(将零件放入计算机,将计算机放入赠款),或者每次捐赠都只包含一大组零件是否可以?如果它是一大组零件,如果我们从赠款中收回一台计算机,则不一定知道哪些零件与哪台计算机配套使用。此外,我们希望能够从报告中了解“本季度捐赠了 34 个完整的系统......”

4

2 回答 2

1

这听起来像是一个已经解决的问题: http://sourceforge.net/projects/phpmyinventory/ http://sourceforge.net/projects/asset-tracker/ 这些只是我在 sourceforge 上通过键入“inventory”找到的两个链接' 在搜索框中。

最基本的描述是这样的:

  • 电脑零件进来。
  • 计算机部件得到存储。
  • 电脑零件离开。

我对 SQL 不够强大,无法推荐一种处理计算机捐赠/销售及其分解成部分的方法——我可能会让一些外部应用程序处理大部分逻辑,并跟踪这一点:

  • 谁捐赠了一台电脑
  • 电脑给了谁

至于逻辑处理:例如,一个网页说:“哇!我们收到了一台电脑!它有:

  1. 电源?
  2. 显卡?
  3. 声卡?
  4. 等等等等。”

赠送计算机时也可以这样做 - 但您需要从存储中删除每个丢失的部件的“1”!

那么,我们如何处理库存呢?好吧,你可以有一张看起来像这样的表:

video card   | recycle | donation-in | storage | garbage
sound card   | recycle | donation-in | storage | garbage
power supply | recycle | donation-in | storage | garbage

每个垃圾箱是在某个时间点有多少个垃圾箱。如果你想让它更具体,你可以添加一个“描述”列,这样你就知道你有多少每种类型的视频卡,例如。

还有一个看起来像这样的表:

part name | from_bin | to_bin | quantity

移动数量的大部分逻辑可能应该由应用程序处理(我更像是一个 Ruby-on-Rails 人,所以这对我来说很有意义)。希望有帮助。

于 2010-01-19T16:58:54.640 回答
1

对于计算机是一组零件位,我们在 LedgerSMB 中跟踪组件的方式是这样的:

我们有一个零件表,其中每个零件都有一个装配标志。

我们有一个装配表,它提供零件和其他零件之间的分层映射。装配体可以由其他装配体、零件和人工构建而成。

于 2013-03-23T00:55:34.817 回答