2009-06-05 81 views
1

假設您有一個ServiceCall數據庫表,可記錄所有對您進行的服務調用。每條記錄都包含與客戶記錄的多對一關係,其中存儲哪個客戶進行了服務呼叫。實體刪除策略

好吧,假設客戶已經停止與您做生意,並且您不需要客戶的數據庫記錄。創建新的ServiceCall記錄時,不再需要客戶的名稱出現在下拉列表中。

你是做什麼的? 你允許用戶從數據庫中刪除客戶的記錄嗎?

您是否爲該客戶的記錄設置了一個特殊列IsDeleted爲true,然後確保所有下拉列表都不會加載所有IsDeleted設置爲true的記錄?雖然這樣可以防止舊記錄在內部連接中斷,但它也會阻止用戶添加與舊客戶同名的新記錄,不是嗎?

你是否不允許刪除?只是允許'禁用'它?

您使用過的其他策略?我猜測每個人都有自己的想法,我只需要看看你的意見。

當然,上述內容相當簡單,通常一個ServiceCall記錄將鏈接到許多其他實體表。所有這些在需要刪除時都會面臨同樣的問題。

回答

2

我更喜歡設置一個IsDeleted標誌,其中一個好處是你仍然可以報告歷史信息(所有的數據仍然存在)。

至於無法插入另一個具有相同名稱的客戶的問題,如果您使用通常自動填充的ID列(例如CustomerId),則這不成問題。

+0

嗨Tetraneutron, 感謝您的回答。 我給你一個'but',哈哈。 但是,如果系統的用戶添加(有意或無意)具有相同名稱的新客戶。系統現在是不是有兩個同名的客戶,並且沒有彼此鏈接(歷史記錄)。是的,內部CustomerID將使其在數據庫中獨一無二,但從用戶的角度來看......嗯。 – Lasker 2009-06-05 04:35:48

0

我同意@ Tetraneutron的answer

另外,您可以創建一個僅列出活動客戶的VIEW,以便更方便地填充下拉列表等。