Um Soft Delete zu vermeiden, erstelle ich eine Papierkorb-Datenbank. Die Hauptdatenbank wird eine Verbindung zu ihr herstellen. Hier ist ein Beispiel für zwei mögliche Verbindungsansätze, und ich hoffte auf etwas Input, der effizienter wäre?Welcher DB-Junction-Ansatz ist in diesem Szenario effizienter?
Der Einfachheit halber können wir sagen, dass es zwei Tabellen gibt, Order
und Invoice
(und jede Rechnung hat nur 1 Bestellung).
Für eine Verbindung dieser Tabellen mit dem Papierkorb war ich unsicher, welchen Ansatz zu nehmen.
Ansatz 1:
DeletedOrder
------------
DeletedOrderId
OrderId
RecycleBinId
Date
Reason
DeletedInvoice
--------------
DeletedInvoiceId
InvoiceId
RecycleBinId
Date
Reason
Ansatz 2:
DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason
Obwohl Ansatz 1 wird mehr Tabellenplatz in der Datenbank übernimmt, wird es weniger Zeilen pro Tabelle und hat schnelle Abfragezeiten wie die System reift. Approach 2 konsolidiert, eine extra gelöschte Tabelle für jede Tabelle in der Datenbank erstellen zu müssen, aber wenn das System reift, wird es größer und wird langsamer abgefragt.
Welche wird insgesamt effizienter sein, oder gibt es eine bessere Möglichkeit, dies zu erreichen?
Vielen Dank für Ihre Antwort. Gute Leistung ist immer entscheidend! ;) Meistens möchte ich die Daten behalten, um sicherzustellen, dass die referenzielle Integrität beibehalten wird, ohne dass Fremdschlüsselbeziehungen oder Kaskadenlöschung entfernt werden müssen, wenn ein Datensatz entfernt werden muss. Dies wird auch die Möglichkeit erleichtern, entfernte Datensätze wiederherzustellen, ohne Leistungseinbußen hinnehmen zu müssen. Der Papierkorb wird eine Kaskadenlöschfunktion haben, die sparsam verwendet wird. –