我有两张桌子:CHECKLIST_INSTANCE
和CHECKLIST_CLASS
在CHECKLIST_INSTANCE
我存储一个外键,CHECKLIST_CLASS_ID
以便我知道该实例正在使用哪个清单。
CHECKLIST_CLASS
CHECKLIST_CLASS_ID
REVISION
NAME
CHECKLIST_CLASS 中的示例数据可能是:
1, A, ABC Checklist
2, A, XYZ Checklist
3, A, QWE Checklist
4, B, ABC Checklist
现在的问题是修改。当我们修改清单时,我当前的策略是给它一个新的代理主键并更改 Rev(如清单ABC Checklist
)
我觉得通过这种策略,我失去了CHECKLIST_CLASS_ID
1 和 4 相关的关联。
如果我要更改设计以便使用组合 PKCHECKLIST_CLASS
1, A, ABC Checklist
2, A, XYZ Checklist
3, A, QWE Checklist
1, B, ABC Checklist
然后我必须更改我的CHECKLIST_INSTANCE 表以将CHECKLIST_CLASS_REV 作为外键包含在内,然后我的所有查询也需要修改。
另一种选择是向CHECKLIST_CLASS
. 分别为 PREVIOUS_REV_ID 或 NEXT_REV_ID
using a PREVIOUS_REV_ID field
1, A, ABC Checklist, null
2, A, XYZ Checklist, null
3, A, QWE Checklist, null
4, B, ABC Checklist, 1
.
using a NEXT_REV_ID field
1, A, ABC Checklist, 4
2, A, XYZ Checklist, null
3, A, QWE Checklist, null
4, B, ABC Checklist, null
使用最后两个中的任何一个,我都不必更改CHECKLIST_INSTANCE
表或查询。关于最佳设计的任何想法?还是我应该调查另一种方法?
== EDIT 为明确起见,我不是在寻找对CHECKLIST_CLASS 表进行编辑的审计跟踪。