管理关系数据库中步骤的最佳和有效方法?

Best and Efficient way to manage steps in a relational database?

我正在设计的数据库需要存储一个人在做某些事情时所经历的步骤 activity 以及他何时停止:

模式在上面,所以你可以更好地理解。

我在想这样的事情:

步骤table

 Step
 ---
 StepId
 StepTypeId

步骤类型table

stepType
---
idstepType

stepTransition table 跟踪步骤

stepTransition
---
stepSource
stepTarget
stepTransitionType

或像这样的 stepTracking table:

stepTracking
---
path
numberofTimesTaken int
stoppedbyUser bool
stoppedbySystem bool

如果数据很多或者有什么想法,知道如何改进吗?

这样做的目的是跟踪并了解有多少人完成了每个步骤以及他们何时停止等。

最终能够对用户停止的步骤进行一些统计。

您有一个用户 table,其用户 ID 作为主键。

您有一个以步骤 ID 作为主键的步骤 table。像这样。

Step
----
Step ID
Step Name

然后你有一个联结 table 捕获用户和步骤之间的多对多关系。

UserStep
--------
UserStep ID (PK)
User ID
Step ID
Start timestamp
Completion timestamp

您在(用户 ID、步骤 ID)上有一个唯一索引,用于将用户与步骤相关联。您还可以在 (Step ID, User ID) 上建立唯一索引,以将步骤与用户相关联。

另一个 UserStep table 看起来像这样。

UserStep
--------
UserStep ID (PK)
User ID
Step ID
Status code (start, complete)
Timestamp

这样,您可以在一个 Status table 中拥有多个状态。 (开始,等待审批,等待资源,等待同事,等待管理决策,等待政府行动,完成)。