实体或标志上的单个状态字段

时间:2016-08-08 19:56:20

标签: database-design entity

我正在设计一个可以保留许多不同实体的数据库。每个实体一个表,例如PostCommentReferralCompany ......

每个实体都可能会有一些与之关联的状态,例如submitteddraftwithdrawnrejected以及我尚未想到的任何其他状态。

一个简单的解决方案是每个实体上的一个status列。但是,有效的实体状态可能同时是submitted rejected(或任何其他组合)。

上面的直接答案是为每个状态创建一个列,类似于标志为true或false。但是,这会冒一个实体的标志不兼容的风险,即publisheddraft (理论上你可以发布草稿,但考虑到它不可能是为了例如)

  • 应用程序逻辑是否只需处理它?<​​/ li>
  • 我是否以某种方式将不同的可能状态标志分组为一组和一列?

最初这听起来像是一个问题,它会收到它取决于类型的答案。它甚至可以归结为个人偏好。 然而,这些类型的问题往往有一些已知的最佳做法。当然,大多数实体或多或少都有相同的状态标志,可以重复使用逻辑?

1 个答案:

答案 0 :(得分:0)

您不一定需要为每个状态创建一个列,但是您应该绝对定义每个列,以便它在逻辑上永远不需要包含多个状态。

听起来你需要进行额外的分析。例如,您可以将“已拒绝”定义为已提交然后被拒绝 - 被拒绝为工作流中的最新状态。

另一种方法是有两列:一列用于表示通过提交创建的工作流状态,另一列用于包含提交结果 - 例如“正在审核”,“暂停”,“已接受”或“已拒绝”。

无论哪种方式,您都需要执行其他分析以确定哪种更适合您的需求。用户需求应该推动分析。