2013-05-29 99 views
0

這不是一個技術問題,而是關於處理使用外鍵約束刪除的正確邏輯。首先,我對編程非常陌生,對軟件工程也是一個虛擬。我還是一年級的學生。在我的練習應用程序中,我使用OneToMany關係將記錄與其他記錄級聯起來。換句話說,當我刪除記錄時,Hibernate會自動刪除關聯的記錄。我的問題是,我的老師告訴我,級聯不對。他說,用戶必須先刪除相關記錄,但他沒有告訴我細節,他告訴我們時他有點生氣。 (他總是這樣,他想威嚇他的學生,Idk他有什麼問題,但我不介意,我只是想學習)。請給我一些建議,因爲我無法下定決心。如何處理相關記錄的刪除記錄?

迄今爲止,這些是我的想法:

1)單擊刪除後,系統會告訴用戶有相關的記錄,它會如果他繼續一起被刪除。他會問他是否會繼續。

2)點擊刪除後,系統會告訴用戶有關聯的記錄,他可以被重定向到一個頁面,或者有一個彈出窗口顯示所有相關的記錄,他可以手動刪除。

3)不允許用戶刪除。

+1

這是關於刪除過程的內部工作(如爲每個實體individualy設置一個語句)?或者說關於刪除過程的UX/UI? – Carsten

+0

你所有的想法都很好,正確。你的老師給出了很好的建議,說你不應該使用Cascading;由於「管理員」用戶被刪除,我曾經看到系統中的所有數據被刪除。這是糟糕的設計。解決方案取決於您的系統目的和對刪除數據的敏感度 - 是否有任何撤消過程可用?就像@Carsten說的那樣,您應該介意刪除過程的用戶體驗,而不是實施,比如通過級聯,交易,或者只是否認操作並提供替代方案。 – darlinton

回答

1

Cascading Deletes的問題在於,您失去了對於擺脫的內容的控制。 我強烈建議而不是它,除非依賴對象實際上是被刪除對象的邏輯擴展。

例如,如果您要刪除訂單,我可以想象您總是希望所有訂單行都被刪除,因爲顯然您要刪除此訂單,該訂單由標題和一些行組成。另一方面,刪除客戶不應刪除相關訂單,因爲訂單本身很重要,它們不僅僅是客戶的屬性。

我不相信有什麼時候使用它的一般規則。但是,如果您有疑問,請選擇您所掌握的選項。

+0

非常感謝。 – TheOnlyIdiot