Afin d'éviter une suppression en douceur, je crée une base de données de corbeille. La base de données principale va se connecter à elle. Voici un exemple de deux approches de jonction possibles, et j'espérais obtenir des commentaires sur ce qui serait plus efficace? Pour simplifier, disons qu'il y a deux tables, Order
et Invoice
(et chaque facture ne comporte qu'une seule commande).Quelle approche DB Junction est la plus efficace dans ce scénario?
Order
-----
OrderId
InvoiceId
Description
Date
NumberOfStuffOrdered
Invoice
-------
InvoiceId
Description
Price
Tax
Shipping
Pour une jonction de ces tables à la corbeille, je ne savais pas quelle approche prendre.
Approche 1:
DeletedOrder
------------
DeletedOrderId
OrderId
RecycleBinId
Date
Reason
DeletedInvoice
--------------
DeletedInvoiceId
InvoiceId
RecycleBinId
Date
Reason
Approche 2:
DeletedRecords
--------------
DeletedRecordsId
RecordPrimaryKeyId
RecycleBinId
RecordType
Date
Reason
Bien que l'approche 1 prendra plus d'espace de table dans la base de données, il aura moins de lignes par table et ont des temps rapides de requête comme le système mûrit. L'approche 2 consolide la nécessité de créer une table supprimée supplémentaire pour chaque table de la base de données, mais au fur et à mesure que la maturité du système augmentera en taille et deviendra lente à interroger.
Lequel sera le plus efficace dans l'ensemble, ou y a-t-il une meilleure façon d'aborder cela?
Nous vous remercions de votre réponse. Une bonne performance est toujours critique! ;) La plupart du temps, je veux conserver les données afin de m'assurer que l'intégrité référentielle est maintenue sans devoir supprimer les relations de clés étrangères ou supprimer en cascade lorsqu'un enregistrement doit être supprimé. Cela facilitera également la possibilité de restaurer les enregistrements supprimés sans affecter les performances. La corbeille aura une fonctionnalité de suppression en cascade à utiliser avec parcimonie. –