爲了避免軟刪除,我創建了一個回收站數據庫。主數據庫將連接到它。以下是兩種可能的聯結方式的示例,我希望提供哪些更有效的輸入?在這種情況下哪種數據庫連接方法更有效?
爲簡單起見,假設有兩個表,Order
和Invoice
(且每個發票只有1個訂單)。
Order
-----
OrderId
InvoiceId
Description
Date
NumberOfStuffOrdered
Invoice
-------
InvoiceId
Description
Price
Tax
Shipping
對於這些表到回收站的連接處,我不確定採取哪種方法。
方法1:
DeletedOrder
------------
DeletedOrderId
OrderId
RecycleBinId
Date
Reason
DeletedInvoice
--------------
DeletedInvoiceId
InvoiceId
RecycleBinId
Date
Reason
方法2:
DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason
儘管方法1將採取多個表空間在數據庫中,將有每個表的行數更少,並且具有快速的查詢時間爲系統成熟。方法2合併必須爲數據庫中的每個表創建一個額外的刪除表,但是隨着系統成熟度的增長,查詢速度會變慢。
哪一個整體效率更高,還是有更好的方法來處理?
謝謝你的迴應。好的表現總是至關重要的! ;)大多數情況下,我希望保留數據以確保參照完整性得到維護,而無需在記錄需要刪除時刪除外鍵關聯或級聯刪除。這也將有助於能夠恢復已刪除的記錄而不會影響性能。回收站將有一個級聯刪除功能,以便謹慎使用。 – 2012-03-29 20:27:11