我需要一个能够在项目出现时存储项目和轨道的表格。
该表还需要告诉我一个客户有多少项......
我尝试使用继承。我为每个步骤分配了一个typeId
(从1到5,每个id代表工作流程中的当前步骤)。这种方法并不理想,因为更新工作流程步骤会删除历史记录。
例如,如果某个项目从shipped
(typeId 3)移动到returned
(typeId 5),我们就会丢失已发货项目的准确计数。
我该如何处理?此外,我更喜欢将数据保存在一个表中,除非我有令人信服的理由不这样做。
更新
物品会逐步邮寄给客户。客户在一个月内可以收到的物品数量有限制,并限制客户在任何给定时间可以在家中拥有多少物品。对于这个例子,我们假设先前为4,后者为2。客户队列可以包含任意数量的项目。因此,需要对队列中的项目进行排名,以便根据客户的偏好发送项目的顺序。
已经发货的商品需要超出排名(客户在发送商品后无法再修改排名)。
答案 0 :(得分:3)
这里没有继承权。时间字段实际上是日期时间。当客户将项目添加到队列时,会在Tracking
表中输入一行。从TimeMarkedShip
到TimeReturned
的其他时间列为NULL
,直到操作发生。 TimeQueued
是主键的一部分,以便允许客户多次租用商品(听起来像是视频租赁给我)。
要计算客户在家中的商品,您可以使用类似
的商品select count(1)
from Tracking
where CustomerID = 1755
and TimeShipped is not NULL
and TimeReturned is NULL ;
答案 1 :(得分:1)
而不是当前步骤的typeID,看起来每个步骤都需要一个布尔列。然后,当您想要计算“净发货”项目时,您可以从“已发货”项目中减去“已退回”项目。
此外,如果您想跟踪历史记录,您可以将这些步骤中的每一个都视为可以为空的日期字段,以便您可以看到某个项目已于2011年3月5日发货并在4/1/11返回。如果您以其他方式使用此表格,例如管理运送/接收或结算,这可能会有所帮助。当然,NULL表示该步骤尚未执行(尚未)。