Come gestire l'eliminazione del record con i record associati?

2

Questa non è una domanda tecnica, ma piuttosto la giusta logica sulla gestione dell'eliminazione con il vincolo di chiave esterna. Nella mia app di allenamento, ho collegato a cascata il record con una relazione OneToMany con altri record. In altre parole quando cancello il record, Hibernate cancellerà automaticamente i record associati.

Il mio problema è che la mia insegnante mi ha detto che il collegamento a cascata non è corretto. Ha detto che l'utente deve cancellare prima i record associati e non mi ha detto i dettagli ed è piuttosto arrabbiato quando ci ha detto. (Non so quale sia il suo problema, ma non mi dispiace, voglio solo imparare).

Per favore, dammi un consiglio perché non riesco a decidermi. Finora questi sono i miei pensieri:

1) Dopo aver cliccato su cancella, il sistema dirà all'utente che ci sono record associati e verrà eliminato se continua. Chiederà poi se continuerà.

2) Dopo aver cliccato su cancella, il sistema dirà all'utente che ci sono record associati e che può essere reindirizzato a una pagina oppure c'è un pop-up che mostra tutti i record associati e può cancellarlo manualmente.

3) Non consentire all'utente di eliminare.

    
posta TheOnlyIdiot 29.05.2013 - 03:09
fonte

2 risposte

2

Affronta il problema dalla direzione sbagliata - chiedi una risposta generale dove non ce n'è. La risposta dipende da molti dettagli del caso d'uso. Chiediti:

  • quale tipo di tipo di dati è gestito dalla tua app di allenamento?

  • l'utente ha bisogno delle informazioni sui record associati per prendere una decisione sulla cancellazione? Oppure il sistema può eliminare in sicurezza i record associati e le informazioni aggiuntive non hanno alcun valore per l'utente?

  • qual è il comportamento previsto nel caso in cui l'utente cancelli accidentalmente il record? I dati possono essere facilmente ripristinati?

  • ogni utente ha il diritto di cancellare tali record e anche i record associati? Oppure può causare ulteriori problemi?

  • (... aggiungi più punti come questo da solo)

In ogni caso, è buona prassi porre questo tipo di domande prima che iniziano a codificare la logica di cancellazione - se non hai chiesto prima di una qualsiasi di queste domande, anche se il tuo insegnante ti ha dato la possibilità di chiedere , può giustamente mettere in dubbio la tua soluzione.

    
risposta data 29.05.2013 - 08:49
fonte
0

La risposta dipende interamente dai requisiti di sistema.

Alcuni sistemi eseguono una "eliminazione a cascata", che elimina i record correlati prima che il record primario venga eliminato. Altri impostano un flag su tutti i record eliminati e li rimuove dal database permanentemente solo quando è scaduto un certo periodo di tempo; ciò consente l'esecuzione di undeletes, se lo si desidera.

In tutti i casi, può essere utile avvisare l'utente quando i record correlati stanno per essere eliminati o visualizzare i record all'utente in modo che possano approvare l'eliminazione. I sistemi di sicurezza possono impedire a un utente di cancellare i record, se non hanno il diritto di farlo. Ma alla fine dipende da quali sono i requisiti.

    
risposta data 29.05.2013 - 03:18
fonte

Leggi altre domande sui tag