2010-04-15 71 views
2

我需要構思和處理數據與修訂的想法。例如,我有一個對象數據庫(例如汽車)。每個對象都有許多屬性,這些屬性可以是任意的,所以沒有一個設置模式來描述這些對象。這些對象可能保存爲鍵值對。修訂:算法和數據結構

現在我需要更改對象的屬性。我不想完全重寫它 - 我希望能夠返回並查看這些屬性更改的歷史記錄,這就是爲什麼我要添加新屬性並保留舊屬性(所以我想時間戳可以完成這項工作告訴哪個屬性是最新的)。

與此同時,我希望能夠快速獲取有關任何對象的信息,僅使用每個屬性的最新版本。

任何想法什麼是最好的方法?至少請給我指出正確的方向。謝謝!

回答

2

一種可能性是有一個對象和屬性表(您可能已經)。 將創建一個包含 ID的ObjectId屬性ID值DATE_ADDED/VERSION_NUMBER(根據你的選擇,如果你想使用時間戳或順序列)

根據你的問題,你總是會添加到關聯表,從不更新它的關聯表。

當您想要獲取最新對象屬性的快照時,需要對按date_added /版本號排序的屬性執行DISTINCT查詢。 對於給定的財產檢查歷史也很簡單。

我希望這可以幫助

+0

我沒有看到使用2表的理由,請你解釋一下嗎?我不能在同一張表的行上選擇DISTINCT嗎? – 2010-04-16 23:10:23

+0

@mvblfst這是在兩個表中完成的,以優化讀取最新數據的性能,我相信讀取修訂表將會是非常大規模的操作 – 2016-03-29 02:46:54