數(shù)據(jù)到底刪還是不刪
筆者語
因為生活(錢)所迫,轉(zhuǎn)行(做蘋果配件相關(guān)做電子產(chǎn)品)已經(jīng)快半年了,轉(zhuǎn)行后,收入確實高了不少,生活也確實滋潤了許多,不過我常常還念自己的程序員生涯,懷念當初對技術(shù)如饑似渴的狂熱追求的日子,讓人覺得無比充實;懷念當初只為解決一個功能、一個算法、一個bug甚至是幫別人解決一個問題而通宵達旦廢寢忘食,讓人覺得熱血沸騰,也正是因為這個懷念,所以我一直保持潛伏于博客園,一直保持學習,忙里偷閑偶爾還會寫幾個小桌面工具,為手中IPhone寫個應(yīng)用程序,偶爾也參與和現(xiàn)在還在搞開發(fā)的朋友討論一些技術(shù)問題。
正文
前幾天一個朋友問我數(shù)據(jù)庫的數(shù)據(jù)用delete誤刪了能恢復嗎?因為他們公司維護一個運行已久的項目,在測試時將delete的where的參數(shù)寫錯了,使所以刪除了一些重要的數(shù)據(jù)。因為備份文件過舊,日志文件破壞了,所以最終還是沒有成功恢復。(順便在此尋找能解決此問題的高手)
由此我不禁想問過期的數(shù)據(jù)為什么要刪除呢?
假如要刪除離職員工信息,那是不是說該員工曾經(jīng)在公司的所以貢獻和成績都要一起抹掉呢?
再如公司要刪除某種停產(chǎn)產(chǎn)品,那是不是說所有包含了該產(chǎn)品的訂單都要一并刪除呢?再級聯(lián)下去,這些訂單對應(yīng)的所有客戶是不是也該刪除?這么一步步刪下去,那公司的損失不言而喻。
員工不是被刪除的,是被“解雇”的。
產(chǎn)品不是被刪除的,是被“停產(chǎn)”的。
訂單不是被刪除的,是被“取消”的。
職位不是被刪除的,是被“填補”的。
在上面這些例子中,我們的著眼點應(yīng)該放在用戶希望完成的任務(wù)上,而非發(fā)生在某個實體身上的技術(shù)動作。幾乎在所有的情況下,需要考慮的實體總不止一個。
為了代替IsDeleted標志,我們可以用一個代表相關(guān)數(shù)據(jù)狀態(tài)的字段:有效、停用、取消、棄置等等。用戶可以借助這樣一個狀態(tài)字段回顧過去的數(shù)據(jù),作為決策的依據(jù)。
刪除數(shù)據(jù)除了破壞數(shù)據(jù)一致性,還有其它負面的后果。我們把所有數(shù)據(jù)都留在數(shù)據(jù)庫里:“能不刪除。就不刪除。”。
原文鏈接:http://www.cnblogs.com/xhyang110/archive/2011/04/05/2006055.html