我想为本地计算机硬件非营利组织制作一个关系数据库系统。我想弄清楚如何实现两个相互关联的功能。首先,我们需要管理我们的零件库存,其次,我们需要跟踪计算机系统的捐赠,因为它们进入我们,以及我们将它们发放出去。
首先,我们有一个简单的零件清单。我们不需要跟踪单个零件(无论如何我们不能),所以我要建模的是计数。我的想法是有不同的零件“箱”,只有一个简单的计数。因此,如果我们将视频卡从其“库存”箱移动到“回收”箱,我想要一个-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 个完整的系统......”