Prima di illustrare metodi di protezione dei dati più flessibili di quelli offerti dalla protezione base, vediamo come evitare che l'eliminazione di Contenuti metta in discussione l'integrità delle informazioni gestite da una app: nella app di esempio: dato un Prestito concesso in risposta ad una Richiesta (che contiene qual è l'Attrezzo richiesto e chi è il Richiedente), se la Richiesta viene eliminata non sappiamo più chi e per cosa è stato emesso il Prestito. In generale: se una Entità A richiama in un proprio Campo Riferimento una Entità B e l'Entità B viene eliminata, questa eliminazione rende "incompleta" l'Entità A.
La protezione base offerta da Ruoli e Permessi non impedisce questa situazione, a meno di togliere a tutti gli Utenti i Permessi di eliminazione su tutte le Entità. Per superare questo limite, si può installare ed attivare il modulo aggiuntivo Entity Reference Integrity. Attivata in Configurazione - Entity Reference Integrity la protezione sui Contenuti, se un Utente prova a eliminare un Contenuto richiamato da altri Contenuti l'eliminazione viene impedita, mostrando all'Utente l'elenco dei Contenuti che lo richiamano e che ne impediscono l'eliminazione. Questo metodo è molto robusto, perché incarica Drupal di impedire ogni eliminazione che distrugga relazioni tra Contenuti.
Di contro, questo metodo è molto rigido, perché:
- si applica a tutti i Contenuti, indipendentemente dal tipo di Contenuto dal Ruolo dell'Utente
- l'eliminazione di un Contenuto può richiedere una lunga sequenza di eliminazioni, magari a cura di Utenti diversi
- può portare a situazioni di stallo, in caso di catene circolari di richiami tra Entità, es. A → B → C → A.