Sto progettando un'applicazione, che aiuterà la progettazione di impianti elettrici. Sono andato per Domain Driven Design, in quanto l'argomento è complesso e l'applicazione crescerà con le conoscenze acquisite. Tuttavia, sono principiante di questo concetto. Per ora, ho un problema per modellare correttamente il dominio, specialmente per dividere le entità in aggregati.
Ho definito il cablaggio - Installazione come un insieme di ConnectionPoints e Cavi , che li connettono. Uno ConnectionPoint ha uno o più cavi . Ogni cavo ha una serie di cavi. Considero la fine di un filo come un Terminale , che possiamo collegare a un altro Terminale che crea una Junction . I Terminali si differenziano l'uno dall'altro, poiché i fili hanno colori e scopi diversi. Giunzioni sono costituiti da due o più Terminali e possono essere eseguiti solo all'interno di ConnectionPoint . L'ho illustrato per una migliore comprensione:
Oltre ai Cavi ci sono anche Dispositivi , che hanno anche Terminali . Sono anche collegati in un ConnectionPoint e i loro Terminali sono trattati allo stesso modo dei Cable di Terminali . Per ciascun dispositivo devo essere in grado di monitorare, a cui è collegato il terminale (potrebbe trattarsi di un elenco di endpoint).
Il problema, con il design, è la necessità di avere riferimenti a Terminali al di fuori di un cavo e entità per creare Giunzioni e traccia le connessioni. Potrei prendere in considerazione un Cavo e un Dispositivo come aggregati di Terminali , poiché Terminali non possono esistere senza di essi e come la conoscenza del genitore di Terminal è importante. Tuttavia, ogni Terminale ha anche un'identità esterna a un Cavo / Dispositivo e non ho idea di come più avanti nel codice e nel database potrei mantenere la conoscenza delle connessioni effettuate.
Hai qualche idea come potrei modellarla? Quali domande dovrei chiedermi per definire un modello corretto ed evitare di mantenere i riferimenti ovunque?