La domanda più grande è: guideresti con una benda sugli occhi? È così se si sviluppa un sistema senza vincoli referenziali. Tenere presente che cambiano i requisiti aziendali, le modifiche alla progettazione delle applicazioni, i rispettivi presupposti logici nelle modifiche al codice, la logica stessa può essere riformattata e così via. In generale, i vincoli nei database sono posti sotto ipotesi logiche contemporanee, apparentemente corrette per particolari serie di asserzioni e ipotesi logiche.
Attraverso il ciclo di vita di un'applicazione, i controlli referenziali e dei dati limitano la raccolta dei dati di polizia tramite l'applicazione, soprattutto quando i nuovi requisiti guidano i cambiamenti logici dell'applicazione.
Per quanto riguarda questo elenco , una chiave esterna non "da sola" migliora le prestazioni, né "degrada le prestazioni" in modo significativo dal punto di vista del sistema di elaborazione delle transazioni in tempo reale. Tuttavia, esiste un costo aggregato per il controllo dei vincoli nel sistema "batch" di volume elevato. Quindi, ecco la differenza, in tempo reale rispetto al processo di transazione batch; elaborazione in batch: laddove il costo aumentato, indotto da controlli di vincolo, di un batch elaborato in sequenza rappresenti un successo in termini di prestazioni.
In un sistema ben progettato, i controlli di coerenza dei dati verrebbero eseguiti "prima" dell'elaborazione di un batch (tuttavia, vi è anche un costo associato qui); pertanto, i controlli dei vincoli di chiave esterna non sono richiesti durante il tempo di caricamento. In effetti tutti i vincoli, inclusa la chiave esterna, devono essere temporaneamente disabilitati fino a quando il batch non viene elaborato.
PRESTAZIONI QUERY : se le tabelle sono unite su chiavi esterne, tenere presente che le colonne di chiavi esterne NON SONO INDICATE (sebbene la rispettiva chiave primaria sia indicizzata per definizione). Indicizzando una chiave esterna, del resto, indicizzando qualsiasi chiave e unendo le tabelle su indicizzate aiuta a ottenere prestazioni migliori, non unendo una chiave non indicizzata con vincolo di chiave esterna su di essa.
Cambiando argomento , se un database supporta solo la visualizzazione di un sito Web / rendering di contenuti / ecc. E registra i clic, un database con vincoli completi su tutte le tabelle viene eliminato per tali scopi. Pensaci. La maggior parte dei siti Web non utilizza nemmeno un database per tale. Per requisiti simili, in cui i dati vengono appena registrati e non citati per esempio, utilizzare un database in memoria, che non ha vincoli. Ciò non significa che non esiste un modello di dati, un modello logico sì, ma nessun modello di dati fisici.