從數據庫中刪除記錄時的最佳做法是什麼?從數據庫中刪除記錄時的最佳做法
例如,如果你有這個在線預訂旅遊應用程序。
你必須要除去用一記遊表,但表遊也鏈接到預訂表和客戶表。現在應該記錄被允許被刪除,或者應該有這樣說的存檔標誌字段等
什麼是最佳做法?
問候, 茶。
從數據庫中刪除記錄時的最佳做法是什麼?從數據庫中刪除記錄時的最佳做法
例如,如果你有這個在線預訂旅遊應用程序。
你必須要除去用一記遊表,但表遊也鏈接到預訂表和客戶表。現在應該記錄被允許被刪除,或者應該有這樣說的存檔標誌字段等
什麼是最佳做法?
問候, 茶。
Branko說,這取決於您的要求(和您的數據庫佈局)。
如果你想保留一個完整的歷史,你可能不會刪除太多。只要設置一個取消標誌可能是最好的。
就在您的示例數據庫設計方面,我要說旅遊應與訂票,而不是客戶(預訂應提供遊覽的客戶多到多對多映射)。
要建立在你的榜樣,你可能不應該被允許刪除的任何旅遊預訂的客戶(或預訂需要也被刪除)。刪除導覽時,需要刪除該導覽的所有預訂(並且您可能需要觸發刪除預訂(或導覽)以通知客戶他們的預訂已被取消,或者此觸發可以在數據庫)。
正如你可能會從上面看到的,有沒有具體的規則,則需要邏輯思考什麼應該或不應該允許特定的數據庫設計和需要什麼東西時,被刪除的情況發生。
對於外鍵(這是最安全的設置),缺省值爲ON DELETE NO ACTION。不用說,你不應該自由地使用ON DELETE CASCADE或一些非默認設置,而不必特別考慮該設置的每個實例以及是否使用該設置是合理的。
你也總是非常需要這樣的方式,如果有人搶過來,就很難不小心刪除了錯誤的事情,因爲這個人不知道使用的精確的技巧,設計數據庫數據庫(例如哪些事情需要以什麼順序完成)。對外鍵的更嚴格或更安全的設置會使這種情況更加困難。
取決於您的要求。也許一個簡單的ON DELETE CASCADE(或SET NULL)將滿足您的需求? –