Sql 我应该反规范化为添加位的联接,还是什么?

Sql 我应该反规范化为添加位的联接,还是什么?,sql,sql-server,database-design,database-normalization,Sql,Sql Server,Database Design,Database Normalization,我的系统中有许多文档,如订单发票、请购单等。为了跟踪其审批工作流,我有一个通用表,其中有以下列 WFID ActionDate DocInstancetype DocinstanceID iscurrent status 1 2017-04-04 PO 58 0 Submitted 2 2017-04-05 PO 58 1 Appr

我的系统中有许多文档,如订单发票、请购单等。为了跟踪其审批工作流,我有一个通用表,其中有以下列

WFID  ActionDate  DocInstancetype DocinstanceID  iscurrent   status
1     2017-04-04      PO              58            0       Submitted
2     2017-04-05      PO              58            1       Approved
3     2017-04-04      PR              74            1       Submitted 
在我的报告中,我通常只需要考虑批准的文件。在文档主表(在PR和PO表中)中添加一个
IsApproved
位,并使用触发器将其同步,以便每次仅需要获得批准的文档时,我都可以避免加入工作流表,这是一个好主意吗


任何其他更好的建议也将不胜感激。

文档表应包含状态(未批准),因为您将来可能需要根据文档状态筛选文档,尽管今天您的需要仅限于status=“approved”。状态更改历史记录应保存在另一个表中,该表在您的情况下为
工作流
,但我建议“document\u Status\u tracking”或“document\u tracking”是该表的更好名称。

由于此处缺少大量信息,因此很难给出建议。PO和PR表是什么样子的,每个表的内容是什么意思,三个表之间的关系如何?现在有一个建议,如果您需要“同步”表,那么很可能要同步的表实际上应该是一个视图;如果考虑速度,您甚至可以使用物化的。触发器可能会变得棘手且容易死锁。