Come posso creare il Cestino per l'applicazione database?
-
20-09-2019 - |
Domanda
Ho un'applicazione di database, voglio consentire all'utente di ripristinare i record eliminati dal database, come in Windows abbiamo il Cestino per i file. Voglio fare la stessa cosa ma per i record del database, suppongo di avere molte tabelle correlate che hanno molti campi.
Modificare:
diciamo che ho le seguenti strutture:
Tabella dei rapporti
- Chiave primaria RepName
- ReportData
Tabella utenti
- Chiave primaria dell'ID
- Nome
Tabella Rapporti utente
- Chiave primaria RepName
- Chiave primaria dell'ID utente
- È eliminato
ora se inserisco il campo isdeleted nella tabella UserReports, l'utente non può aggiungere nuovamente lo stesso record se è contrassegnato come eliminato, perché il record è già presente e ciò comporterà la duplicazione.
Soluzione
Nota:Utilizzo sempre la chiave primaria surrogata.
Aggiungi una colonna timestamp "deleted_at".Quando l'utente elimina la voce, inserisce l'ora corrente.Rendi questa parte fondamentale del tuo vincolo.
In ogni query ricorda di cercare solo i record che hanno null nel campo delete_at.
Alcuni framework (come ActiveRecord) lo rendono banale da fare.