爲了保持系統的一致性我可以考慮2刪除策略:刪除實體戰略
關係中的所有實體的級聯刪除;
模擬刪除(即,沒有真正從數據庫中刪除,但例如,實體中的字段
deleted
的值爲true
並且它影響顯示邏輯)。
我喜歡第二種方法,但我不知道如何正確實施它。
例如,假設我們開發一個簡單的博客(用戶,文章,評論和其他平常的東西)。我們來看User
實體(和一個記者表USER
)。如果我們刪除某個用戶,那麼他的deleted
字段將具有值true
。所有用戶的評論都會保留在原來的位置,每位讀者都會知道某個評論的作者是誰。
這一切看起來不錯,但我應該怎麼做,如果一個新用戶(誰試圖進行登記)會刪除一些用戶已經指定相同的登錄/電子郵件地址(其它獨特的領域)?理論上,這個獨特的字段值已經是免費的並且可以被採用。但是,如果有一天我會決定刪除刪除的用戶,該怎麼辦?
與這種情況有關的最佳實踐是什麼?
我們軟刪除一切和夜間存檔了,那麼很難從生產數據庫中刪除任何軟刪除他們是在一個月以後老了。可能考慮從檔案中刪除超過六個月的軟刪除。這取決於你的需求和對他們有意義的事情。 – 2010-07-28 08:44:47