最近,我偶然發現了以下問題:Given是一個帶有「Books」和「Authors」的簡單數據模型。每本「書」都有一個「作者」的參考。持久性是通過關係數據庫實現的。除了添加書籍和作者外,還可以刪除它們。通常,如果我想刪除作者,我會執行SQL DELETE
操作並刪除相應的行。但是,我在其他項目中看到,人們不會撥打DELETE
。相反,他們添加某種活動/刪除標誌並將相應的行標記爲「已刪除」。關係數據庫:DELETE與「刪除標記」
我的問題是:這是一般的最佳做法嗎?有什麼優勢?我最好的猜測是:
- 設置一個標誌,具有比
DELETE
操作 - 有更好的表現。如果你運行的空間,它仍然可以運行清理服務,查找刪除的對象,並刪除相應的行
- 設置一個刪除標誌是數據庫一致性更好,因爲「作者」的例子刪除上面的程序可以在相應的「簿條目破壞外鍵。
不管怎樣,這些都只是猜測。是否有人知道答案?