2010-11-27 57 views
2

我正在建立一個網站,讓人們創造詞彙課。創建課程時,會創建引用課程的新聞項目。當另一個用戶練習課程時,用戶還會將練習結果和練習結果一起存儲。刪除數據或只是將其標記爲已刪除?

我的問題是當用戶決定刪除課程時該怎麼做?

我考慮的選項包括:

  • 其實從 數據庫中刪除的教訓,並刪除所有 引用新聞,實踐 結果等
  • 只是將其標記爲刪除, 排除來自參考 新聞項目,結果等的鏈接

您的想法是什麼? ala Facebook應該不會刪除數據?應該一起避免參考嗎?

順便說一下,我使用Google App Engine(python/datastore)。據我所知,當被引用的對象被刪除時,db.ReferenceProperty沒有被設置爲None?

謝謝!

回答

1

如果需要審計數據更改,將數據標記爲已刪除(又名「軟刪除」)會極大地幫助您記錄執行刪除操作的用戶以及發生刪除操作的時間。它還允許數據非常容易被「刪除」。

話雖如此,沒有理由阻止「硬刪除」(其中數據實際上被刪除)作爲管理功能來幫助整理錯誤。

0

將數據標記爲「已刪除」是最簡單的。如果您目前沒有使用它,這將使您的數據庫中的所有內容都非常整潔,並且可以輕鬆添加新功能。另一方面,如果您正在向用戶展示他們的「詞彙點」來自哪裏,或者他們完成了多少課程,那麼對軟刪除項目的引用可能是必需的。

我會從第一個開始,如果需要,稍後再進行更改。原因如下:

  • 如果您未使用軟刪除,請假定它們將無法以未來請求實際需要的方式工作。無論如何,你將不得不重寫它們。
  • 如果您正在使用它們,請假定沒有人使用使用它們的功能。現在你已經做了很多工作,並將自己與維護一些沒有人關心的事情聯繫在一起。
  • 如果您創建它們,您會發現自己正在創建一個使用它們的功能。見上面。
  • 如果您不創建它們,那麼一旦您對系統用戶真正需要的知識有了更好的瞭解,您可以隨時創建它們。

不是創建軟刪除會爲您提供更多的選擇。 Options have value. Options expire. Never commit early unless you know why.

相關問題