(vision) SCS/DDD

This commit is contained in:
2025-07-01 23:53:29 +02:00
parent 6e50b9d32d
commit f4b11b220d
14 changed files with 1381 additions and 0 deletions
@@ -0,0 +1,180 @@
@startuml
title "Detailliertes Datenmodell: Veranstaltungs_Context"
!theme vibrant
' Externe Referenzen werden der Übersichtlichkeit halber als vereinfachte Entitäten dargestellt.
package "Externe Referenzen (Andere Kontexte)" {
class Verein_ZNS
class Person_ZNS
class OETORegelReferenz
class Sportfachliche_Stammdaten
}
package "Veranstaltungsplanung" as VeranstaltungsContext {
' #################### Aggregate Root: VeranstaltungsRahmen ####################
class VeranstaltungsRahmen <<(A,orange) Aggregate Root>> {
+ veranstaltungsRahmenId : UUID
--
+ name : string ' z.B. "Reitertage Musterhof Frühling 2025"
+ zeitraum : DatumsbereichVO
+ austragungsort : AdresseVO
' FK zu Service_ZNS_Daten.Verein_ZNS
# hauptveranstalter_verein_nr : VARCHAR(4) <<FK>>
}
' #################### Aggregate Root: Turnier_OEPS ####################
class Turnier_OEPS <<(A,orange) Aggregate Root>> {
' A-Satz, Stelle 2-6
+ oepsTurnierNr : VARCHAR(5) <<PK>>
--
' FK zu VeranstaltungsRahmen
# veranstaltungsRahmenId : UUID <<FK>>
' A-Satz, Stelle 7-31
+ name_ort : VARCHAR(25)
' A-Satz, Stelle 32-47
+ zeitraum : DatumsbereichVO
' A-Satz, Stelle 48-72
+ kategorie_text_turnier : VARCHAR(25)
+ turnierart_sparte : string ' z.B. CDN-A, CSN-B*
' A-Satz (Ergebnis), Stelle 73-75
+ protokoll_version_oeps : VARCHAR(3)
' A-Satz (Ergebnis), Stelle 76-95
+ meldestelle_software_version : VARCHAR(20)
' A-Satz (Ergebnis), Stelle 96-103
+ link_id_turnier : VARCHAR(8)
}
' #################### Aggregate Root: Meisterschaft_Cup_Serie ####################
class Meisterschaft_Cup_Serie <<(A,orange) Aggregate Root>> {
+ mcsId : UUID <<PK>>
--
+ name : string ' z.B. "XYZ Sommercup 2025"
+ typ : string ' Meisterschaft, Cup, Serie
+ jahr : INTEGER
+ sparte : string
# oetoRegelRefId : UUID <<FK>>
}
' #################### Entitäten innerhalb des Turnier_OEPS Aggregats ####################
' Ein Bewerb innerhalb eines Turniers
entity Pruefung_OEPS {
+ pruefungId : UUID <<PK>>
--
' B-Satz, Stelle 61-63 (3-stellig)
+ oepsBewerbNr : VARCHAR(3)
' B-Satz, Stelle 5-39
+ name_text_pruefung : VARCHAR(35)
' B-Satz, Stelle 40-43
+ klasse_text : VARCHAR(4)
' B-Satz, Stelle 44-51
+ kategorie_text_pruefung : VARCHAR(8)
' B-Satz, Stelle 52-59
+ datumPruefung : Date
' Zur Steuerung der spartenspezifischen Logik
+ artDisziplin : DisziplinVO
' B-Satz (Ergebnis), Stelle 64-71
+ link_id_pruefung : VARCHAR(8)
}
' Eine Abteilung eines Bewerbs
entity Pruefung_Abteilung {
+ abteilungId : UUID <<PK>>
--
' B-Satz, Stelle 4
+ oepsAbteilungNr : INTEGER
+ bezeichnung : string ' z.B. "Abt. 1: Junioren"
' B-Satz (Ergebnis), Stelle 52-54
+ anzahl_starter_gemeldet : INTEGER
' B-Satz (Ergebnis), Stelle 55-60 (ohne Komma)
+ geldpreis_summe : DECIMAL
}
' Entität zur Speicherung der konkreten Anforderungen für eine Prüfung/Abteilung
entity PruefungsAnforderungen {
+ anforderungenId: UUID <<PK>>
--
' Kann sich auf eine Pruefung_OEPS oder eine Pruefung_Abteilung beziehen
# bezugs_id: UUID <<FK>>
' FK zu Service_OeTO_Verwaltung.OETORegelReferenz
# oeto_regel_ref_id: UUID <<FK>>
}
entity Anforderung_Lizenz {
# anforderungenId: UUID <<FK>>
# lizenzTypCode: VARCHAR(4) <<FK>>
}
entity Anforderung_Altersklasse {
# anforderungenId: UUID <<FK>>
# altersklasseCode: VARCHAR(4) <<FK>>
}
' #################### Spartenspezifische Erweiterungen ####################
package "Sportfachliche Details für Prüfungen" {
' Alle Spezifika sind 1:1 mit Pruefung_OEPS verbunden
entity DressurPruefungSpezifika {
# pruefungId : UUID <<PK>> <<FK>>
--
' FK zu Service_OeTO_Verwaltung.Sportfachliche_Stammdaten
# aufgabe_stammdatum_id : UUID <<FK>>
+ platz_groesse_code : string ' z.B. 20x40, 20x60
}
entity SpringenPruefungSpezifika {
# pruefungId : UUID <<PK>> <<FK>>
--
' FK zu Service_ZNS_Daten.Person_ZNS
# parcours_designer_person_id : VARCHAR(6) <<FK>>
+ anzahl_hindernisse : INTEGER
+ hoehe_max_cm : INTEGER
+ erlaubte_zeit_sek : INTEGER
' FK zu Service_OeTO_Verwaltung.Sportfachliche_Stammdaten
# wertungs_verfahren_stammdatum_id : UUID <<FK>>
+ anzahl_umlaeufe : INTEGER
+ anzahl_stechen : INTEGER
}
' (Vielseitigkeit und RVK Spezifika hier analog)
}
' #################### Value Objects ####################
class DatumsbereichVO <<VO>> {
+von: Date,
+bis: Date
}
class AdresseVO <<VO>> {
+strasse: string,
+plz: string,
+ort: string
}
class DisziplinVO <<VO>> {
+name: string
}
' #################### Beziehungen ####################
' Aggregat-Hierarchie
VeranstaltungsRahmen "1" -- "1..*" Turnier_OEPS : "beinhaltet"
Turnier_OEPS "1" *-- "1..*" Pruefung_OEPS : "besteht aus"
Pruefung_OEPS "1" *-- "1..*" Pruefung_Abteilung : "unterteilt in"
' Anforderungen zuordnen
Pruefung_OEPS "1" -- "1" PruefungsAnforderungen : "hat"
Pruefung_Abteilung "1" -- "0..1" PruefungsAnforderungen : "hat spezielle"
PruefungsAnforderungen "1" -- "*" Anforderung_Lizenz
PruefungsAnforderungen "1" -- "*" Anforderung_Altersklasse
' Sparten-Spezifika zuordnen (Vererbung/Erweiterung)
Pruefung_OEPS <|-- DressurPruefungSpezifika
Pruefung_OEPS <|-- SpringenPruefungSpezifika
' Meisterschaft/Cup Beziehungen
class MCS_Wertungspruefung
(Meisterschaft_Cup_Serie, MCS_Wertungspruefung) .up. Pruefung_Abteilung
}
' Beziehungen zu externen Kontexten
VeranstaltungsContext.VeranstaltungsRahmen -- Verein_ZNS : "veranstaltet von"
VeranstaltungsContext.SpringenPruefungSpezifika -- Person_ZNS : "Parcoursdesigner"
' Weitere Beziehungen zu OETORegelReferenz, Stammdaten etc.
@enduml