資料到底刪還是不刪

來源:互聯網
上載者:User

筆者語

因為生活錢)所迫,轉行做蘋果配件相關做電子產品)已經快半年了,轉行後,收入確實高了不少,生活也確實滋潤了許多,不過我常常還念自己的程式員生涯,懷念當初對技術如饑似渴的狂熱追求的日子,讓人覺得無比充實;懷念當初只為解決一個功能、一個演算法、一個bug甚至是幫別人解決一個問題而通宵達旦廢寢忘食,讓人覺得熱血沸騰,也正是因為這個懷念,所以我一直保持潛伏於部落格園,一直保持學習,忙裡偷閒偶爾還會寫幾個小案頭工具,為手中IPhone寫個應用程式,偶爾也參與和現在還在搞開發的朋友討論一些技術問題。

本文

前幾天一個朋友問我資料庫的資料用delete誤刪了能恢複嗎?因為他們公司維護一個運行已久的項目,在測試時將delete的where的參數寫錯了,使所以刪除了一些重要的資料。因為備份檔案過舊,記錄檔破壞了,所以最終還是沒有成功恢複。順便在此尋找能解決此問題的高手)

由此我不禁想問到期的資料為什麼要刪除呢?

假如要刪除離職員工資訊,那是不是說該員工曾經在公司的所以貢獻和成績都要一起抹掉呢?

再如公司要刪除某種停產產品,那是不是說所有包含了該產品的訂單都要一併刪除呢?再級聯下去,這些訂單對應的所有客戶是不是也該刪除?這麼一步步刪下去,那公司的損失不言而喻。

員工不是被刪除的,是被“解僱”的。

產品不是被刪除的,是被“停產”的。

訂單不是被刪除的,是被“取消”的。

職位不是被刪除的,是被“填補”的。

在上面這些例子中,我們的著眼點應該放在使用者希望完成的任務上,而非發生在某個實體身上的技術動作。幾乎在所有的情況下,需要考慮的實體總不止一個。

為了代替IsDeleted標誌,我們可以用一個代表相關資料狀態的欄位:有效、停用、取消、棄置等等。使用者可以藉助這樣一個狀態欄位回顧過去的資料,作為決策的依據。

刪除資料除了破壞資料一致性,還有其它負面的後果。我們把所有資料都留在資料庫裡:“能不刪除。就不刪除。”。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.