Hai ragione quando dici che il modello non dovrebbe contenere nulla fuori tema e dovrebbe contenere i suoi dati "strettamente". Tuttavia, questo non ha nulla a che fare con la persistenza o con i modelli specifici dell'implementazione.
Il modello di dominio è ciò che useresti per spiegare il tuo sistema a qualcuno che non ha idea del tuo linguaggio di programmazione o dei tuoi framework. Nel migliore dei casi, puoi usarlo per comunicare con i non programmatori.
Sulla base del modello di dominio puoi sviluppare il tuo modello di dati che, a sua volta, descrive cosa stai persistendo e come. Non includeresti qui dati transitivi / calcolati, ma probabilmente ID specifici per database e cose del genere.
Si noti che questi due sono solo la base analitica per il modello / diagramma di classe. Le classi che hai possono, ma non necessariamente devono riflettere tutto dagli altri due modelli.