我有一个(SQL Server)数据库,用于跟踪表上的更改;客户的要求是能够查看任何时间点的“图片”,并指定要求的日期。 我到目前为止所做的是在Log trigger的想法之后实施HistoryTable
,并使用数据库触发器来存储历史数据。数据库记录有关n-m关系变化的信息
现在,需求发生了变化,我需要为原始表添加多对多(n-m)关系。当然,链接的数据集(n-m关系)也应该“版本化”,并随着时间的变化而变化为原始表格。
我的第一个想法是将n-m关系与主表中的“伪ID”相关联,即:正常(int)字段,而不是主键(不随时间变化)。这样一来,我可以改变这个ID随着时间的推移,例如:
版本1:
Version 1
ID RelID Data
5 5 Version 1
Version 2
ID RelID Data
5 5 Version 2
Version 3
ID RelID Data
5 6 Version 3
在这个例子中,纳米关系没有版本1和2之间变化,但在第3版改变。
这是正常的,但我的问题是:
- 每当纳米关系版本的变化,我怎么能得到一个新的RELID是在表中独特之处?
- 另一种选择:我可以将n-m关系同时引用到ID和RelID(确实是唯一的)吗?
- 有没有比我更聪明的解决方案?
预先感谢您的任何帮助
我发现你的答案符合[this](http://stackoverflow.com/questions/19719110/data-warehouse-slowly-changing-dimensions-with-many-to-many-relationships)在SO上的相关答案。顺便说一下,所附的[文章](http://www.cibis.org.je/index.php/blog/2010/02/18/modelling-loading-a-slowly-changing-many-to-many-关系/)也是一个非常有趣的阅读。谢谢。 – Nova 2014-11-20 07:55:12