Ho difficoltà a definire questo schema di dati che ho incontrato lavorando su diverse applicazioni.
Consiste di:
- Un tipo di oggetto che è composto da molti oggetti stessi
- Un secondo tipo di oggetto, in cui ogni istanza "ha molti" del primo oggetto
- E, ciascuno degli oggetti secondari del primo oggetto è modificabile per ogni associazione al secondo tipo di oggetto.
Un semplice esempio potrebbe essere:
- Un corso di programmazione costituito da un insieme di lezioni
- Le lezioni sono composte da un insieme di compiti.
- Un corso può essere assegnato a uno studente.
- Tuttavia, una volta assegnato un corso a uno studente, ciascuna lezione e / o assegnazione può essere personalizzata per lo studente, con rimozioni e aggiunte, fino al punto in cui il corso originale può essere irriconoscibile.
Nelle mie soluzioni, ciò che risulta è:
In caso di assegnazione di un corso a uno studente, il corso viene caricato in memoria. Quindi, per ciascun oggetto secondario, viene generato un oggetto relazione studente / oggetto secondario con i metadati appropriati. Essenzialmente, sto usando l'oggetto originale come modello per generare gli oggetti personalizzabili richiesti.
Ciò comporta un'enorme quantità di dati man mano che gli oggetti secondari diventano più complessi e numerati. Mi chiedo se ci sia qualche ottimizzazione o pattern per ridurre la quantità di logica / complessità richiesta per manipolare questo modello di dati.