[請益] DataBase刪除資料的做法?

看板Soft_Job (軟體人)作者 (Min)時間11年前 (2015/02/14 23:57), 編輯推噓10(10013)
留言23則, 12人參與, 最新討論串1/7 (看更多)
各位大大看到標題題先勿砲 我要問的是 現在的公司在做CRUD類型的系統的時, 當提供用戶"刪除"資料這個功能時 我發現公司前輩的做法是在資料表加上IsDelete欄位(預設false) 當用戶使用刪除資料時實際上是把IsDelete這個欄位設為true 所以並不會實際使用T-SQL下Delete語句來刪除 那當資料在呈現時,只需要把IsDetele != true的資料撈出來顯示就好 小弟也陸續待過幾個公司,不過也是第一次看到這種做法 我想的到的這種做法的優點 1.當USER誤刪資料時可以快速的將資料"改"回來 2.若有Table間彼此有Reference在刪除時,可以不用處理完整性限制問題(? 當然缺點就是系統的資料只會多不會少 所以想請問各位大大也有人在處理資料刪除時是使用這種做法嗎??? 這種做法會有什麼問題嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.127.153 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1423929429.A.E28.html

02/15 00:15, , 1F
遇到的公司反而大部分都是這種做法,你只要能想像
02/15 00:15, 1F

02/15 00:15, , 2F
user百分之百一定會刪錯資料,第一個找的人也一定是PG
02/15 00:15, 2F

02/15 00:16, , 3F
你就會知道其實這種系統設計保護的不只是user還有PG
02/15 00:16, 3F

02/15 00:17, , 4F
不過也有可能是產業別的關係
02/15 00:17, 4F

02/15 00:19, , 5F
我所在的產業別是 即使user真的刪錯資料 你也真的必須
02/15 00:19, 5F

02/15 00:19, , 6F
幫他生回來,因為少那一筆資料 有可能會被告的......
02/15 00:19, 6F

02/15 00:31, , 7F
Google也是不刪資料的啊...儲存空間的成本越來越小了
02/15 00:31, 7F

02/15 00:33, , 8F
在處理ERP的資料常這樣做 而且表準還包括最後修改者
02/15 00:33, 8F

02/15 00:33, , 9F
從什麼值改成什麼值 交易資料是環環相扣的 資料長太
02/15 00:33, 9F

02/15 00:33, , 10F
大 ㄧ般DBA會定期clone
02/15 00:33, 10F

02/15 00:44, , 11F
說到底也是成本的問題,幫客戶復原資料的成本比儲存空間大
02/15 00:44, 11F

02/15 00:46, , 12F
我是支持這作法的,我以前做過erp
02/15 00:46, 12F

02/15 00:47, , 13F
狀況真的和keyboard大講的一樣
02/15 00:47, 13F

02/15 01:04, , 14F
在join資料時又要多一個判斷,不是很方便,不過可以做
02/15 01:04, 14F

02/15 01:04, , 15F
成view表
02/15 01:04, 15F

02/15 02:02, , 16F
這做法還算是挺常見的。
02/15 02:02, 16F

02/15 09:52, , 17F
這不是很正常做法嗎? 大部分的刪除本來就不是實際刪除
02/15 09:52, 17F

02/15 09:57, , 18F
如果企業要做data mining 要存的歷史紀錄會比想像中的多
02/15 09:57, 18F

02/15 11:18, , 19F
原來如此~~是小弟見識太淺薄啦XD
02/15 11:18, 19F

02/15 12:04, , 20F
soft delete阿 權限可以只要update 回復資料又容易
02/15 12:04, 20F

02/15 12:54, , 21F
大部份是這種做法 要關心的反而是歷史資料archive問題
02/15 12:54, 21F

02/17 17:43, , 22F
還蠻常見的 除非說空間已經快爆了才會真的去砍
02/17 17:43, 22F

02/17 20:25, , 23F
是應該要這樣做 沒人知道以後這些資料需不需再找回來
02/17 20:25, 23F
文章代碼(AID): #1Ktt1Lue (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1Ktt1Lue (Soft_Job)