Sto progettando un'applicazione, che memorizzerà le statistiche sportive, le mostrerò in diagrammi diversi e faremo ancora poche operazioni su di esse. Consenti all'utente di eseguire alcune bozze finte, ecc.
Ho scelto di creare prima un dominio, quindi creare un database tramite l'approccio code-pugno. Quindi ho le mie entità:
- Player (nome, teamID, elenco delle statistiche)
- Squadra (nome, elenco dei giocatori)
- Statistiche (beginDate, endDate, playerId, < ... statistiche diverse in colonne separate > ...........)
Come dovrei dividerli in aggregati? So che Player
è un aggregato. So che l'elenco dovrebbe essere in Player
aggregato. Ma per quanto riguarda il Team
? La parte del team di Player
è aggregata o separata?
Sono confuso, perché il giocatore deve sicuramente avere una chiave esterna per la squadra. Ma la squadra ha perfettamente senso senza un giocatore (non come Stats, che senza un giocatore non ha alcun senso - è per questo che fanno parte dell'aggregazione di Player). Potrei mostrare solo le statistiche per i team.
La squadra dovrebbe essere un aggregato separato?
EDIT: Ecco come appare il mio dominio:
public class Stats
{
// Stats...
}
public class Player
{
public Team Team { get; private set; }
public List<Stats> Stats { get; private set; }
}
public class Team
{
public string Name { get; private set; }
public string FullName { get; private set; }
}