Esistono lati negativi per non definire esplicitamente le relazioni tra database?

1

Ho un'applicazione PHP con un database MySQL. Non ho definito alcuna relazione formale tra le tabelle. (ad esempio, imposta chiave esterna, ecc.). Sebbene in ogni query (CRUD) considero sempre la relazione tra tabelle.

Ci sono degli svantaggi significativi nel non definire le relazioni formalmente? Ci sono problemi di prestazioni?

    
posta Xaverius Najoan 12.04.2016 - 02:43
fonte

2 risposte

6

Sì, c'è uno svantaggio molto significativo. Se si commette un errore nel codice, si ottengono dati non validi nel database. I vincoli impediscono di inserire dati non validi nel database.

I vincoli impediscono inoltre di immettere dati non validi direttamente tramite SQL indipendentemente dall'applicazione.

Naturalmente, se mai e poi mai fai errori ed errori, allora non hai bisogno di vincoli.

    
risposta data 12.04.2016 - 16:49
fonte
3

Se hai indici appropriati per le tue query dovresti stare bene.

Hai definito formalmente le relazioni nelle istruzioni di selezione sql, che presumibilmente vengono controllate nel codice.

Penso che la sua pratica abbastanza comune sia quella di ignorare i vincoli delle chiavi esterne, se si è uno sviluppatore che crea il proprio DB da utilizzare solo da un'app. Può farti risparmiare un po 'di tempo preoccupandoti dell'ordine delle eliminazioni, ecc.

Sebbene le migliori pratiche suggeriscano di aggiungerle in un determinato momento, ciò ti aiuterà a cogliere i casi e renderà più semplice mantenere in futuro.

    
risposta data 12.04.2016 - 12:17
fonte

Leggi altre domande sui tag