Sto tentando di implementare un quiz a scelta multipla e vorrò memorizzare tutte le mie domande e risposte in un database SQLite. Avrò molte domande e per ogni domanda ci saranno 2 o più risposte da mostrare.Memorizzazione di un quiz a scelta multipla in un database - Decidere lo schema
La mia domanda è, come devo archiviare le domande e le risposte in un database? Ho due idee per uno schema (chiave primaria in grassetto)
- come (molti a molti)
domande (QuestionID: int, questionString: String, correctAnswerID: int)
risposte (answerID: int, answerString: String)
questions_and_answers (QuestionID, answerID)
2.
domande (QuestionID: int, questionString: String, correctAnswerID: int)
risposte (answerID: int, answerString: String, QuestionID: int chiave esterna)
Non sono sicuro quale sia migliore o se esiste un altro modo?
Forse questions_and_answers
potrebbe diventare molto grande e causare lunghi tempi di recupero e problemi di memoria? Poi di nuovo, suppongo che question_and_answers
sia indicizzato sulle chiavi primarie. Nel secondo schema, answers
verrebbe indicizzato su answerID
e non su questionID
? il che significa che i tempi di ricerca aumenterebbero in quanto l'intera tabella dovrebbe essere cercata?
Possono esserci ~ 10.000 - 20.000 risposte. (il quiz può essere eseguito su un dispositivo mobile e le domande dovranno essere visualizzate "istantaneamente")
Nota: non mi aspetto che ci sia molta sovrapposizione tra le risposte. Non penso che la quantità di sovrapposizione significhi meno dati memorizzati, considerando lo spazio aggiuntivo richiesto dalla tabella questions_and_answers
È probabile che le risposte siano ripetute su più domande? – Tenner
Ad una ipotesi approssimativa, direi che forse il 30% delle risposte verrà visualizzato in più di una domanda –