2011-11-10 169 views
-5

我正在構建一個使用基於評論的票務系統的系統。我希望得到一些關於將用戶標記爲已刪除或完全刪除記錄的想法。軟刪除VS硬刪除

理想情況下,我想保持系統免費的舊帳戶,但同時刪除用戶票務系統內的評論可能沒有意義。

有沒有人想出解決這類問題的方法。我的想法到目前爲止:

  1. 刪除用戶帳戶,評論和所有其他相關數據。
  2. 將用戶標記爲已刪除,並在他們再次訂閱時創建一個全新的帳戶。
  3. 將用戶標記爲已刪除,但是如果用戶嘗試再次訂閱更新並取消標記爲刪除而不是添加新用戶。
  4. 僅刪除用戶帳戶。然後,在獲取評論等時,檢查關聯的ID,如果未找到任何結果,則顯示評論,並顯示消息「用戶帳戶已被刪除」。

您怎麼看?

+0

此處允許打廣告嗎?打我不合適。 –

+1

-1:在其他軟件上沒有插頭 – Elemental

+0

感謝您的意見,我想我會選擇3. – ORStudios

回答

1

我要說的是,第三種選擇是最好的選擇

我對這種推理是存儲在數據庫中的票應該保持數據庫的生命,如果試圖從數據庫中刪除用戶,您將刪除該用戶對數據庫中任何票據的引用。

(那如果數據庫將讓你刪除它,因爲用戶的ID將被鏈接到他/她可能已經創建的任何門票)

當該用戶進入的票務系統,以創建一個新帳戶,該他可能在幾個月前創建的票已消失,現在可能已由null創建。

+1

已刪除的用戶應該只能登錄(再次激活其帳戶)。如果您允許某人作爲已刪除的用戶進行註冊,那麼您可能會遇到身份被盜的問題。但是,如果你允許刪除的用戶再次登錄,允許用戶刪除他們的帳戶是沒用的... –

+0

是的,但你不刪除他們的帳戶...爲什麼迫使他們再次註冊...允許他們使用他們的現有登錄詳情 – adam2510

+1

正是!那麼,刪除/停用用戶和活動用戶有什麼區別?他們都能夠登錄!那就是我的意思。 –

0

我總是使用最後的解決方案:只刪除用戶帳戶,並顯示「帳戶已刪除」消息,如果海報的帳戶不存在了。如果您不允許用戶更改他們的用戶名,您還可以保存海報的用戶名(超出其ID),並在用戶刪除其帳戶時以純文本的形式顯示,或者如果用戶仍然處於活動狀態,則顯示爲鏈接。

+0

國際海事組織,你的'總是'選項是** 4中最差的**。 – Johan

+0

你能解釋爲什麼? –

+0

數據庫的全部重點是**存儲**內容。如果您的用戶發送垃圾郵件數據庫並且不斷刪除用戶帳戶,那麼將很難找出誰給你帶來悲傷。 – Johan

0

如果你代表用戶< - 用FOREIGN KEY>註釋的關係,你無法刪除用戶而不刪除評論或更新註釋的相關用戶爲NULL或指向一些「刪除用戶「假用戶帳戶(無論哪種情況,都會丟失發佈評論的用戶信息)。

+0

你可以添加一個'on delete set null'或者同樣的子句。 – Johan

+0

這是真的,但我的觀點是,你然後失去了與用戶的關係。如果您希望在用戶帳戶重新出現時能夠記住這種關係,則不會發生。 –

0

這真的取決於你的用例。
就我個人而言,我絕對不會像用戶帳戶從數據庫中完全刪除的東西。

因此選項1不存在。 (但這只是我)
選項2有問題,你會有很多懸而未決的用戶帳戶。
選項3貌似-cough- 審計線索的最佳選擇 -cough-

選項4是自找麻煩,你有一個鏈接到另一個表,但數據已被刪除。

0

我寫的票務系統基本上都是3號。其他任何東西都會毀掉你需要保留的審計記錄。

如果你需要擺脫舊的東西,一種方法是設置清除舊票。然後,當一個帳戶的所有相關票證都沒有了時,您可以刪除該帳戶。