Ci sono vantaggi di utilizzare i vincoli di chiave estera quando si lavora in un quadro record attivo come Ruby-on-rails?

StackOverflow https://stackoverflow.com/questions/3168995

Domanda

Sto tornando in sviluppo web a tempo pieno dopo una pausa di cinque anni. La mia esperienza precedente (nessun record attivo o MVC) mi dice di essere molto approfondita con il mio schema del database. vincoli di chiave esterna, indici univoci, ecc ... può davvero dare una mano quando il codice di spaghetti scrittura.

La comunità ancora trovare in questi utile quando si lavora in un quadro di registrazione / MVC attivo?

Modifica

La mia preoccupazione principale è la gestione dei vincoli in due posti; il codice del modello e il db. Questo significa duplicare il lavoro e potrebbe portare a bug. Cioè si dispone di un vincolo univoco su qualche campo nel database, ma il modello non sapere a questo proposito? Credo che è vero il contrario, così, si può solo dimenticare di mettere il vincolo nel modello allora si avrebbe dati duplicati quando non si desidera.

È stato utile?

Soluzione

E 'funziona bene, ma in casi bisogna stare attenti a Double Click race condition bug (come soffre validates_uniqueness_of da condizioni di gara).

Per quanto riguarda il modello è in questione non si preoccupa, la logica del database è separata alla logica in app Rails.

Altri suggerimenti

Se non si utilizza vincoli, il database casi accumulo di integrità referenziale rotto e duplicati dove ci dovrebbe essere valori unici, ecc.

Più precisamente, se si fa uso dei vincoli (e non si ottiene l'abitudine della loro disattivazione di volta in volta come alcuni fanno), avrete sempre la certezza che tutti i dati siano conformi ai vostri dati destinati modello.

Questo è il valore di vincoli del database-applicata: è l'unico modo in cui si può essere sicuri dei vostri dati, e non sarà necessario controllare due volte che il quadro (ad esempio ActiveRecord) ha funzionato correttamente. Non dovrete agli script SQL scrittura di pulizia per trovare orfani spurie e duplicati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top