场景说明: 这次的项目遇到这样一个问题,报告将会被多个管理员进行审批,现在如何找出某个特定管理员还未审批的报告列表;
报告与管理员存在 多对多的 关联关系,单个报告需要多个管理员审批,一名管理员可以审批多个报告. 这里还包含一个管理员审批记录表.
table_report (id)
table_manager (id)
table_report_handle_log (id,manager_id,report_id)
通过 table_report_handle_log 的关联作用,我们可以获得"某个管理员已经审批的报告记录",但如果要获得还未审批的记录就会很麻烦,因为从表信息中只能直接找出"已审批"的属性."未审批"的只能间接反映出来,满足条件的有一下两条:
这两条如果用mysql进行查询,需要进行大量的遍历判断,性能耗费非常巨大,方案pass.
那怎么办?
显然我们还需要个字段来管理 报告是否已审批,但报告被多个管理员审批,所以报告和审批存在1:N的关系,专门建立一张表来记录这个信息:
table_reprot_status (id,report_id,manager_id,state(审批状态?0:1))
这个就有点像通知模型了,当一个报告产生,我们将通知所有的管理员过来执行审批,由此产生如上记录信息.当管理员审批过后更新该表对应记录内容. 这样要获取特定管理员未审批的记录就很简单了
mysql: select * form table_report_status where manager_id = id and state = 0;
Bug天天改,头发日日疏,码字不易,如果有帮助到你,就点击"下方感谢"支持一下把.
赞一个~