@startuml title "Datenmodell: Lizenzen_und_Qualifikationen_Context" !theme vibrant package "Lizenzen & Qualifikationen" { ' Das Aggregate Root: Der Lizenznehmer ist die zentrale Entität, ' die Konsistenz für ihre Lizenzen und Qualifikationen sicherstellt. class Lizenznehmer <<(A,violet) Aggregate Root>> { ' Referenz zum Personen-Context, keine vollständige Person + oepsSatzNrPerson : VARCHAR(6) -- name : string vorname : string ' Methode zur Überprüfung der Startberechtigung + hatStartberechtigungFuer(anforderungen) : boolean } ' Entität innerhalb des Aggregates class Lizenz { + gueltigBis : Date + ausgestelltAm : Date + bezahltImJahr : INTEGER } ' Entität innerhalb des Aggregates class Qualifikation { + erworbenAm : Date + bemerkung : string } ' Value Object: Beschreibt einen Lizenztyp, hat keine eigene Identität class LizenzTyp <> { + code : string + bezeichnung : string + sparte: string } ' Value Object: Beschreibt einen Qualifikationstyp class QualifikationsTyp <> { + code : string + bezeichnung : string + sparte : string } ' Beziehungen innerhalb des Aggregates Lizenznehmer "1" *-- "0..*" Lizenz : "besitzt" Lizenznehmer "1" *-- "0..*" Qualifikation : "hat" ' Beziehungen zu Value Objects Lizenz "1" -- "1" LizenzTyp Qualifikation "1" -- "1" QualifikationsTyp } note right of Lizenznehmer **Aggregate Root: Lizenznehmer** Alle Änderungen an Lizenzen oder Qualifikationen einer Person sollten über das Lizenznehmer-Objekt laufen, um die Geschäftsregeln (z.B. "Darf diese Lizenz haben?") zu wahren. end note @enduml