Nella mia app per Android, c'è una domanda come "Quale dei seguenti alimenti hai mangiato oggi?" ( non la domanda effettiva ), con un elenco fisso di alimenti (ad esempio "Mele, banane, pizza, hamburger") da cui l'utente può selezionare tutto ciò che si applica.
Ora voglio memorizzare nel DB, quali risposte sono state selezionate in quale giorno. A mio avviso, ho diverse possibilità:
- memorizzali insieme in un campo come testo delimitato. Questo si interrompe se l'utente cambia le impostazioni della lingua, quindi non è davvero un'opzione per la mia app.
- Utilizzare una maschera di bit per convertire la selezione in un numero intero e memorizzarla nel database. Mantiene lo schema DB semplice e intuitivo e sfrutta l'abilità nativa di Android per selezionare la stringa corretta in base alla lingua impostata, ma rende praticamente impossibile eseguire una query per una risposta specifica. Le query SQL sono semplici, ma è necessaria un'ulteriore modifica dei dati nell'app.
- Fai una corretta normalizzazione. Bloats del database, poiché ci deve essere una tabella di risposte per ogni lingua supportata, ma sono possibili query per risposte specifiche. Le query SQL sono più complesse ma riducono la necessità di manipolazione dei dati nell'app stessa.
Quale di questi dovrei usare?
C'è una soluzione che non ho pensato è probabilmente meglio?
C'è una sorta di best practice o linee guida per questo tipo di problema nello sviluppo di Android?