Impatto sulle prestazioni di non implementare relazioni a livello di database? [chiuso]

-2

Immaginiamo un modello di dati con clienti e fatture. Esiste una relazione da 1 a n tra un cliente e le sue fatture. Utilizziamo un ORM (come Hibernate).

Si può implementare esplicitamente la relazione 1-n (usando JPA per esempio) oppure no. In caso contrario, è necessario eseguire un po 'più di lavoro per recuperare le fatture.

Tuttavia, è molto più semplice mantenere, migliorare e sviluppare il modello di dati delle applicazioni in cui le relazioni tra gli oggetti non sono esplicitamente implementate nel database.

La mia domanda è: qualcuno ha notato un impatto significativo sulle prestazioni quando non ha implementato le relazioni nel database?

    
posta Jérôme Verstrynge 31.10.2012 - 13:57
fonte

1 risposta

2

Quando implemento una relazione del genere, ci sono 2 parti:

  1. La "chiave esterna"
  2. "indice"

La chiave esterna è un vincolo che dice che il CustomerId nella tabella Invoice deve esistere nella tabella Customer . Questo (probabilmente) non ti dà alcun miglioramento delle prestazioni (in effetti c'è un colpo di prestazioni per fare il controllo), ma è lì per rilevare gli errori e accertarsi che i dati siano coerenti. Possono accadere cose strane. Non suggerisco di saltare questo.

L'indice è quando indicizzi la tabella Invoice con la colonna CustomerId . So che in SQL Server devi specificarlo separatamente dalla chiave esterna. L'indice ti darà un miglioramento delle prestazioni, se cerchi mai fatture per un dato cliente. Tuttavia, il mantenimento dell'indice richiede tempo e spazio, quindi c'è un compromesso.

    
risposta data 31.10.2012 - 14:31
fonte

Leggi altre domande sui tag