2013-08-29 68 views
1

如果用戶在數據庫中有幾百條記錄,並且希望製作一份草稿,以便他們可以獲取所有當前數據並進行一些更改,並將其另存爲潛在草稿,並保留兩份副本?我應該如何處理數據庫中的數據副本?

我應該複製同一張表中的所有數據並將其標記爲草稿嗎?

或只重複更改?如果沒有變化,然後使用「非草稿」數據?

用戶應該能夠進行更改,然後再回到現場並在那裏進行更改,而不影響草稿?

+0

正在將一個選項複製到VMWare實例中? – Randy

+0

[將草稿保存爲重複數據?](http:// stackoverflow。com/questions/18507845/saving-drafts-as-duplicated-data) –

回答

0

您可以使用BEGIN TRANS,COMMIT和ROLLBACK語句,也可以創建一個存儲過程/一段代碼,這意味着用戶所做的任何修改都會被放入臨時表中,直到它們準備投入生產。

如果您正在進行大量更改,最好使用臨時表,因爲使用COMMIT等可能導致鎖定實時數據以用於其他用途。

這篇文章可以幫助如果上面沒有任何意義您:http://www.sqlteam.com/article/temporary-tables

編輯 - 你可以創建一個「對飛」新表(即不是暫時的,而是完全成熟的SQL表),並將其命名爲有意義的事。例如,用戶intials,然後是原始表名,後跟一個時間戳。

然後,您可以在較長時間內以編程方式創建,修改和刪除這些表格,並與實時表格進行比較。您需要跟蹤正在創建多少個表以防萬一您的數據庫增長到龐大規模。

然後,唯一讓人頭疼的是將更改重新放入實時數據中。例如,如果有人將數據剪切成新表格,然後3周後決定在進行更改後將其發送到現場。在這種情況下,實時數據有可能會改變,並可能取代用戶提交的更改。

雖然你可以通過一些創意編碼來解決這個問題。有很多方法可以解決這個問題,所以如果你在下一步遇到困難,你可能想開始一個新的問題。但希望這至少能給你一些啓發。

+0

我已經編輯了我的問題,使其更加清晰,草稿可能與原始版本並排放置,用戶可以查看這兩個副本的數據,這將是幾百行,幾百個用戶想要做到這一點,這仍然是可行的臨時表? – Alex

+0

可能會有臨時表格持續相當長的時間。但是,如果您創建新表來保存信息,審計等也許會更容易。我正在編輯我的答案,以便更清楚地製作 – Yonabart

+0

爲了審計/備份目的創建新表格並不是一個壞主意,只要確定是否有多個用戶這樣做,就如何完成這些工作來設置規則/指導原則(命名,他們停留多久,他們備份的頻率等)。否則,最終會出現我現在所處的情況,用戶在過去的X年內創建了超過300個「備份」或「複製」表,浪費空間,並且很難查看數據庫並知道哪些表是合法的,哪些只是副本/備份。 – MattD

2

只是簡單地在表中引入一個版本字段,將會受到影響。

內容管理系統(CMS)已經這樣做了。例如,您可以創建博客帖子,並且版本爲1.然後進行更改,然後獲取版本2並繼續。

你顯然最終會存儲相當多的數據。不過,一個很好的好處是您可以輕鬆編寫查詢來加載數據的版本(或快照)。

作爲一種慣例,您可以始終將最高版本號設置爲「活動」版本。

相關問題