Sql-Server
在 SQL Server 中儲存修訂(很像 TFS)
所以,到目前為止我得到了什麼:
表:變更集
列:ID | 評論 | 送出者
表:客戶
列:ID | 姓名
表:客戶變更集
列:ID | 客戶 ID (FK) | 變更集 ID (FK)
所以現在我可以在一個變更集中進行多個客戶變更(再次非常類似於 TFS)。現在,客戶對像中的每個變更集都會導致創建一個新的客戶對象(並且由於標識列而分配了一個新的 Id)。
我現在的問題是,我不知道如何表示與客戶之間的映射。我有幾個引用 的表
Customers.Id
,但這意味著我將引用一個舊版本的客戶(最初的版本,沒有任何更改)。最好的方法是什麼?
- 不要在每次簽到時創建一個新客戶?但是我怎麼會得到我需要的邏輯呢?
- 將所有外鍵更新為我的新
Customer.Id
? 那需要相當長的時間。
顯然,當您簽入變更集時,根據您對流程的描述,您知道客戶是誰(或曾經是)。甚至 TFS 也需要相同的東西,以便它可以保持歷史記錄。
無論如何,在同一個對象的多個版本中,什麼是不變的?
“名稱”是不變的嗎?(可能不是。)如果客戶表那麼簡單,除了名稱更改之外,我看不到您正在跟踪什麼。但可能該表要復雜得多。
但只要您知道這是同一個客戶,您就應該在新的客戶行中攜帶一個*常量值。*就像是:
Table: Customers Columns: Id | CustomerNumber| Name
這樣,“Id”只是一個行代理鍵,但 CustomerNumber 將被分配一次,並且將是包含在您正在跟踪的數據版本中的數據。
我認為 CustomerNumber 可能是分配給該客戶的第一個 Id,但我建議使用獨立的編號方案,如果需要公開的話,可能需要校驗數字以防止輸入錯誤。