我试图模拟这样的过程:一名同事提交一份关于他们拟议工作程序的声明,另一名同事评论和批准该声明。目前,我有一张这样的桌子:
METHODOLOGY
methodology_id
entered_by
statement
entered_date
status_code
reviewed_by
reviewer_comments
reviewed_date身份代码如下:
1 = in progress by originator
2 = finished and locked by originator
3 = in progress by checker
4 = finished, locked and rejected by checker
5 = finished, locked and approved by checker
6 = approved method was unlocked due to revision to methodology
7 = the originator was changed with a new originator after method was approved
8 = the checker was changed with a new checker 如果是这样的话:
METHODOLOGY_STATEMENT
methodology_id
entered_by
statement
entered_date
status_code
METHODOLOGY_REVIEW
methodology_review_id
methodology_id
status_code
reviewed_by
reviewer_comments
reviewed_date现在,每个方法语句只需要一个Review。
发布于 2013-10-30 20:06:55
这两种方法都可能是正确的。
如果您想要更改可能的评论数量,请选择一个表。想让事情变得困难可能是违反直觉的,但如果让它变成1:n实际上是个坏主意,那么构建一些痛苦来使改变有一些逻辑。
但是,为了长期的灵活性,您几乎可以肯定地想要使用两个表。如果是我的话,我会在那里设置一个触发器,以强制执行“每个方法一次审查声明”规则。如果这种情况有所改变,只需修改或删除触发器。
但是,要记住的一个问题是:如果您进行了多次评审,您将如何解决与此冲突的状态代码?例如,如果同一个方法论语句有一个代码4和一个代码5,那么怎么办?
更新:
...or可以做更好的事情,并使用@Max建议的唯一约束。
https://dba.stackexchange.com/questions/52532
复制相似问题