Sto lavorando a un motore di quiz per l'apprendimento di una lingua straniera. Il motore mostra agli utenti quattro immagini contemporaneamente e quindi riproduce un file audio. L'utente deve abbinare l'audio all'immagine corretta. Di seguito è riportata la struttura del documento MongoDB. Ogni documento è costituito da un riferimento di file immagine e una serie di riferimenti a file audio che corrispondono a quell'immagine. Per generare un'istanza di quiz seleziono quattro documenti a caso, mostro le immagini e poi riproduco a caso un file audio tra i quattro documenti.
Il prossimo passo nello sviluppo delle mie applicazioni è decidere il miglior schema del documento per la memorizzazione delle ipotesi utente. Ci sono diversi requisiti da considerare:
- Devo essere in grado di segnalare le statistiche a livello di utente. Ad esempio, risposte corrette totali, ipotesi totali, accuratezza media, ecc.
- Devo essere in grado di interrogare le immagini in base ai progressi di apprendimento dell'utente. Ad esempio, seleziona 4 documenti in cui il conteggio delle ipotesi è > 10 e la precisione è < = 0,50.
- Lo schema deve essere ottimizzato per la generazione rapida di quiz.
- Lo schema non deve causare problemi di ridimensionamento futuri rispetto alle dimensioni del documento. Assumi utenti da 1 mm che fanno una media di 1000 ipotesi.
Considerato tutto questo come informazioni di base, quale sarebbe lo schema consigliato? Ad esempio, memorizzerai ogni ipotesi nel documento Immagine o forse in un documento Utente (non mostrato) o in una nuova raccolta di documenti creata per le ipotesi di registrazione? Consiglieresti di registrare i dati grezzi di ipotesi o calcoleresti le statistiche incrementando i contatori all'interno del documento pertinente?
Schema per la raccolta di immagini:
_id "505bcc7a45c978be24000005"
date 2012-09-21 02:10:02 UTC
imageFileName "BD3E134A-C7B3-4405-9004-ED573DF477FE-29879-0000395CF1091601"
random 0.26997075392864645
user "2A8761E4-C13A-470E-A759-91432D61B6AF-25982-0000352D853511AF"
audioFiles
[
0
{
audioFileName "C3669719-9F0A-4EB5-A791-2C00486665ED-30305-000039A3FDA7DCD2"
user "2A8761E4-C13A-470E-A759-91432D61B6AF-25982-0000352D853511AF"
audioLanguage "English"
date 2012-09-22 01:15:04 UTC
}
1
{
audioFileName "C3669719-9F0A-4EB5-A791-2C00486665ED-30305-000039A3FDA7DCD2"
user "2A8761E4-C13A-470E-A759-91432D61B6AF-25982-0000352D853511AF"
audioLanguage "Spanish"
date 2012-09-22 01:17:04 UTC
}
]