簡體   English   中英

sql刪除相關記錄?

[英]sql delete related records?

刪除記錄的最佳做法是什么? 哪個選項最正確?

例如

有以下情況:

----用戶----

int usr_id

varchar 名稱

varchar 姓氏

布爾刪除_yn


---科目--

整數主題_id

varchar 標題

布爾刪除_yn


---subject_to_user---

int subject_to_user_id

int usr_id

整數主題_id

布爾刪除_yn


如果我想刪除用戶或主題,是否需要刪除關系 - subject_to_user?

為什么我要問,因為在工作中有時用戶會刪除一些信息,然后我們必須恢復這些數據。 目前我們刪除了相關數據,但恢復非常困難;

所以我在問什么是刪除的最佳做法? 哪個選項最正確?

我認為刪除相關數據是正確的,但這取決於情況。

通過刪除那里我的意思是標記 deleted_yn 真/假

最佳做法是不刪除任何內容。 只需將項目標記為已刪除

添加列“IsDeleted”並在大多數查詢中添加“WHERE IsDeleted=False”

在數據庫中將數據標記為已刪除非常好,但在某些情況下,您可能需要真正從數據庫中刪除數據以符合數據法規。

使用 postgresql 時,您可以使用“USING”關鍵字刪除相關數據,以將刪除查詢組合到相關表中。 例如

DELETE FROM observed_topics 
  USING analyzed_documents
  WHERE analyzed_documents.id = observed_topics.document_id
  AND analyzed_documents.author = 'the_man_with_the_right_to_be_forgotten';
DELETE FROM analyzed_documents
  WHERE author = 'the_man_with_the_right_to_be_forgotten';

將首先刪除與一些文檔相關的observed_topics ,在第二個語句中我們刪除實際文檔。

subject_to_user 中的相關數據是如何關聯的? 帶身份證。

如果您從 user 和 subject 中刪除,但沒有從 subject_to_user 中刪除,那么是什么告訴您不會創建一個 ID 已經在 subject_to_user 中的新用戶?

這個想法是刪除所有相關數據。 如果您需要恢復,您始終可以擁有另一組名為 deleted_user、deleted_subject 和 deleted_subject_to_user 的表。 當您從主表中刪除時,請移至之前的表。

Udi Dahan(我深信不疑地受其影響)寫了一篇關於這個主題的優秀博客文章。 你可以在這里閱讀它,但摘要是為了反映現實生活中發生的事情。

例如,在現實世界中,訂單被“取消”、“退回”但從未真正刪除——上下文非常重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM