Come indicare che un'applicazione è stata avviata prima?

2

Sto costruendo un'applicazione con un database in cui mi piacerebbe popolare il DB con alcuni dati al primo avvio (in modo che l'utente abbia alcuni esempi di come l'applicazione può essere utilizzato)

Per raggiungere questo obiettivo, vorrei rilevare se l'applicazione viene avviata per la prima volta e se questo è il caso, aggiungi queste righe iniziali al database e, in caso contrario, salta questo

Che cosa consiglieresti di fare per indicare che l'applicazione è stata avviata prima?

Alcune alternative a cui ho pensato:

  • Utilizzo delle impostazioni dell'applicazione
  • Avere un file vuoto nella directory dell'applicazione che viene rimosso non appena l'applicazione è stata avviata una volta

Ci sono altre alternative? Cosa puoi raccomandare e perché?

    
posta sunyata 29.08.2017 - 19:48
fonte

3 risposte

7

O

  • distribuire l'istanza iniziale del database con tutti gli esempi, in modo che i dati siano già presenti prima che l'applicazione venga avviata la prima volta o

  • verifica se qualcuno dei dati è già presente nel database e compila se non lo è. A seconda di come sono strutturati i dati, un semplice "SELECT COUNT (*)" può essere sufficiente per questo.

Inoltre, pensa al caso in cui un utente cancella tutti i campioni dal DB, come deve comportarsi l'applicazione:

  • lascia i campioni cancellati (che si adatta al primo approccio)

  • ricrea automaticamente i campioni (cosa che farà la seconda strategia)

  • chiedi all'utente una volta se l'applicazione deve ricreare i campioni, e anche se risponde "no", non chiedergli di nuovo

Potresti usare un indicatore separato da qualche altra parte (nel database, in una tabella aggiuntiva, non al di fuori del file system!) per darti la possibilità di controllare se la popolazione iniziale è accaduta. Tuttavia, si tratta di un'informazione in qualche modo ridondante, in genere è più sicuro convalidare l'esistenza di alcuni dati testando effettivamente per tali dati direttamente, invece di fare affidamento su un contrassegno di metadati secondario. D'altra parte, se offri all'utente la possibilità di decidere se vuole i campioni (o meno), avrai sicuramente bisogno di qualche indicatore nel db per ricordare la sua decisione.

    
risposta data 29.08.2017 - 22:43
fonte
2

Esamina "gli script di migrazione del database"

Di solito includono una tabella del numero di versione e delle modifiche per database che possono essere interrogate per determinare quale setup o modifiche (se ce ne sono) da eseguire all'avvio.

    
risposta data 30.08.2017 - 02:28
fonte
0

Poiché hai già un DB, puoi creare un modulo di inizializzazione chiamato nel punto di accesso della tua app. La logica di questo modulo sarebbe qualcosa come:

//initialization module
init_info = db.get_initialization_info()
if (init_info.last_startup_date == null) {
    save_sample_data_for_user(db)
}
init_info.last_startup_date = datetime_now()
db.save_init_info()
    
risposta data 29.08.2017 - 20:25
fonte

Leggi altre domande sui tag