我正在设计一个可以保留许多不同实体的数据库。每个实体一个表,例如Post
,Comment
,Referral
,Company
......
每个实体都可能会有一些与之关联的状态,例如submitted
,draft
,withdrawn
,rejected
以及我尚未想到的任何其他状态。
一个简单的解决方案是每个实体上的一个status
列。但是,有效的实体状态可能同时是submitted
和 rejected
(或任何其他组合)。
上面的直接答案是为每个状态创建一个列,类似于标志为true或false。但是,这会冒一个实体的标志不兼容的风险,即published
和draft
(理论上你可以发布草稿,但考虑到它不可能是为了例如)子>
最初这听起来像是一个问题,它会收到它取决于类型的答案。它甚至可以归结为个人偏好。 然而,这些类型的问题往往有一些已知的最佳做法。当然,大多数实体或多或少都有相同的状态标志,可以重复使用逻辑?
答案 0 :(得分:0)
您不一定需要为每个状态创建一个列,但是您应该绝对定义每个列,以便它在逻辑上永远不需要包含多个状态。
听起来你需要进行额外的分析。例如,您可以将“已拒绝”定义为已提交然后被拒绝 - 被拒绝为工作流中的最新状态。
另一种方法是有两列:一列用于表示通过提交创建的工作流状态,另一列用于包含提交结果 - 例如“正在审核”,“暂停”,“已接受”或“已拒绝”。
无论哪种方式,您都需要执行其他分析以确定哪种更适合您的需求。用户需求应该推动分析。