邏輯刪除

語言文字

邏輯刪除是指數據已經“不需要”了,但是並沒有使用delete語句將這些數據真實的從資料庫中刪除,而只是用一個標誌位將其設置為已經刪除。

概述


在計算機中資料數據等都以文件形式存儲,刪除文件分為兩種情況。分為邏輯刪除和物理刪除。

邏輯刪除與物理刪除

邏輯刪除指文件沒有被真正的刪除,只不過是文件名的第一個位元組被改成操作系統無法識別的字元,通常這種刪除操作是可逆的,就是說用適當的工具或軟體可以把刪除的文件恢復出來。物理刪除指文件存儲所用到的磁存儲區域被真正的擦除或清零,這樣刪除的文件是不可以恢復的

為什麼需要邏輯刪除


對數據進行邏輯刪除,一般存在以下原因:
● 防止數據誤刪除,不能找回數據;
● 這些數據還具有一定的商業價值,比如用戶的註冊信息;
● 雖然這些數據可以刪除,但是這些數據還有關聯數據,這些關聯數據不能刪除。
對數據進行邏輯刪除,可以保證數據的安全性和完整性。但是,邏輯刪除也會帶來一些問題:
● 資料庫表的數據冗餘,導致查詢緩慢;
● 寫sql進行數據處理時需要排除那些已經邏輯刪除的數據,這就會導致sql複雜,容易出錯,特別是涉及多表查詢時;
● 進行邏輯刪除時,還需要考慮與之相關的數據怎麼處理;
● 還有,如果數據表的某個欄位要求唯一,並強制約束,比如用戶表中的登錄用戶名欄位,設計為邏輯刪除的話,一旦有新的同用戶名記錄就無法插入。但如果不將該欄位設置為唯一性約束的,那麼在每次插入數據的時候,都需先進行一次查詢,看看有無未(邏輯)刪除的同名記錄存在,低效率是一回事,而且在高併發的系統中,很難保證其正確性。