2

让我们从这张表开始:

CREATE  TABLE IF NOT EXISTS `resourceMovement` (
  `resourceID` INT(4) UNSIGNED NOT NULL ,
  `movementDateTime` DATETIME NOT NULL ,
  `movementQuantity` INT(11) UNSIGNED NOT NULL ,
  `fromLocationID` INT(4) UNSIGNED NULL ,
  `fromIndividualID` INT(11) UNSIGNED NULL ,
  `fromDeptID` INT(4) UNSIGNED NULL ,
  `toLocationID` INT(4) UNSIGNED NULL ,
  `toIndividualID` INT(11) UNSIGNED NULL ,
  `toDeptID` INT(4) UNSIGNED NULL ,
  `lastUpdated` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
  PRIMARY KEY (`resourceID`, `movementDateTime`, `movementQuantity`) ,
  [ List of foreign key constraints. ]

这会随着时间的推移跟踪特定数量的特定资源 ID 如何从一个部门/位置/人员移动到另一个部门/位置/人员。

我想做的是创造一个……东西。循环遍历 toLocationID/toIndividualID/toDeptID 值并为与这些目的地关联的每个 resourceID 生成运行清单的过程或触发器或视图。

我什至在 MySQL 存储过程方面还不够好,无法有效地做到这一点。

我想我可以创建三个正在运行的库存表,每个用于部门、位置和人员,并有一个触发器来随着移动表的更新而更新这些表。常规表或临时表会更好吗?

细节问题不断出现。所以,我将只留下一般性问题:扫描审核库存移动的表以确定实际运行库存的最佳方法是什么?

谢谢!

4

1 回答 1

1

我过去曾实施过类似的系统。将它分成几张桌子似乎是最好的(对我来说)。

资源
- 资源 id
- 资源描述
- 数量

更改
- 更改 ID
- 更改日期/时间戳
- 更改类型
- 资源 ID
- 目标 ID
- 数量

目的地
- 目的地 id
- 目的地类型

更改类型将包括:
- 来自分销商的新库存
- 将某些部分分配给个人/地点/事件
- 丢弃库存
- 保修更换
- 销售

目的地将包括:
-人/地点/事件-(在您的情况下,它将是部门、人员和地点)

要了解您有多少(总计)库存:

从资源中选择

要了解给定目的地有多少:

从资源中选择加入更改加入目的地标记<=有趣的事件

要查找给定项目的历史记录:

从资源 = 的更改中选择

因此,您不必运行持续更新..您只需要跟踪更改..它以(合理)标准化的方式发生。

于 2013-03-13T17:47:02.250 回答