Domanda di progettazione (utilizzare la stessa istanza o copia?)

1

Stiamo sviluppando un sito web di e-learning in cui è possibile praticare LearnItem (in genere parole di una lingua straniera). Il concetto è molto simile a Memrise.

Quando un utente pratica un LearnItem, viene creato un oggetto Result (contiene la data della risposta, più un flag per indicare se la risposta fornita dall'utente era corretta)

I LearnItem sono raggruppati in LearnItemLists e un utente può scegliere di creare la propria LearnItemList o usarne uno esistente (ad esempio LearnItemList "Le 1000 parole inglesi più comuni", che ha 1000 LearnItems)

Questo è il punto in cui abbiamo opinioni divergenti nel team. Quando un utente desidera utilizzare un LearnItemList esistente, creato da qualcun altro, quindi

Versione A:

Archiviamo la stessa istanza LearnItemList per ogni utente che ha sottoscritto lo stesso LearnItemList. Ciò significa che dobbiamo archiviare i risultati per ogni User + LearnItem in una struttura separata, poiché un LearnItem appartiene a diversi utenti.

Versione B:

Copia in profondità tutte le LearnItemLists.

Copiamo il LearnItemList con tutti i suoi LearnItem per ogni utente che si è iscritto. In questo modo possiamo memorizzare i risultati per il LearnItem per l'utente dato semplicemente facendo riferimento a User.LearnItemList.LearnItem.Results

Entrambe le versioni hanno pro e contro, ma in generale, quale ha più senso?

    
posta user1437649 12.06.2016 - 16:10
fonte

1 risposta

1

Vorrei archiviare singole istanze di elementi di apprendimento. bit ha learnItemLists per utente.

Ie

LearnItem
{
    String Id
    ....
}

User
{
    LearnItemList[] LearnItemLists
}

LearnItemList
{
    UserId
    Name
    String[] LearnItemIds
}

La cosa fondamentale per me è che l'utente può creare le proprie liste e presumibilmente modificarle.

Perciò se voglio usare una lista esistente dovrò farne una mia copia.

Non ho bisogno delle mie stesse copie degli stessi learnItem, solo l'Id, dato che sono uguali per tutti gli utenti

    
risposta data 12.06.2016 - 16:26
fonte

Leggi altre domande sui tag