我有一個(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