In che modo DB e UI concordano sui valori predefiniti?

0

Ho creato una tabella in un database Postgres. Vorrei creare un modulo in un'applicazione Java per inserire righe in quella tabella. Alcuni campi hanno valori predefiniti. Qual è il modo migliore per il database e l'interfaccia utente di concordare su quali sono i valori predefiniti? Inoltre, qual è il modo migliore per il modulo di comunicare l'intenzione dell'utente riguardo i valori predefiniti al database?

    
posta Solomonoff's Secret 10.10.2014 - 19:28
fonte

3 risposte

2

L'integrità referenziale e altri vincoli dovrebbero essere gestiti dal database e non dall'applicazione che lo utilizza.

Nel caso di vincoli predefiniti, avrei l'UI passare in NULL per quei campi o semplicemente non li specificare affatto nella query INSERT . Il database fornirà quindi il valore predefinito.

Il vantaggio di questo è che SQL è progettato per l'attività di gestione dei dati, quindi gestisci i dati (inclusi i valori predefiniti) nel livello che lo gestisce meglio. Se hai più applicazioni che lo utilizzano, i dati saranno coerenti. Se qualcuno apre una finestra di query per manipolare i dati, i dati saranno coerenti. Se qualcuno utilizza un inserimento di massa o un altro metodo di caricamento dei dati, i dati saranno coerenti.

La chiave qui è tutto il funnel nel database: è un chokepoint di dati. Ciò lo rende il posto ideale per gestire i vincoli in modo coerente.

    
risposta data 10.10.2014 - 21:38
fonte
0

Preferibilmente, dovresti costruire il tuo flusso di lavoro in modo che i nuovi record siano inizializzati solo nella GUI e non dal database. Ciò garantirà che non sia necessario per concordare i valori predefiniti, poiché i valori predefiniti del DB non diventano mai visibili all'utente.

Se deve elaborare l'aggiunta proprio come la modifica, cioè il front-end è caricato con i valori di default letti dal server, allora dovresti cercare di generare automaticamente uno dei due lati - sia automatico -generare lo script di creazione SQL dal codice front-end o viceversa, oppure generare automaticamente da un documento di descrizione dei dati separato.

    
risposta data 10.10.2014 - 19:50
fonte
0

Fare entrambe le cose dovrebbe essere considerato un'opzione. Ci sono casi in cui la logica è troppo complessa e si basa su dati provenienti da così tante altre tabelle, che il codice del database è solo un brutto posto per gestirlo. Se l'obiettivo è di metterli sempre nello stesso posto, non si può voler violare questo, quindi tieni tutto sul modulo.

Nel modulo, puoi prepopolare i valori predefiniti, in modo che l'utente sappia cosa sono e potenzialmente può cambiarli o se è un valore non importante per l'utente e / o se non vuoi che lo cambi, hai la flessibilità di lasciarlo fuori dalla forma e lasciare che sia il db a gestirlo.

In questo modo, se esegui qualsiasi tipo di importazione / trasferimento della data, sai che le regole verranno comunque mantenute.

Ovviamente il rovescio della medaglia è la duplicazione degli sforzi e il mantenimento delle cose coordinate e supportate lungo la strada. Ci sono due potenziali luoghi da determinare, "Da dove proviene questo valore?"

    
risposta data 10.10.2014 - 20:52
fonte

Leggi altre domande sui tag