611 lines
21 KiB
Plaintext
611 lines
21 KiB
Plaintext
@startuml
|
|
!theme vibrant
|
|
|
|
title Datenbankmodell ÖTO - Service-Orientierte Modulare Struktur (inkl. aller Sparten)
|
|
' Ankerpunkt: Montag 19. Mai, 10:53 Uhr (basierend auf Nutzer-Input und vorherigen Diskussionen)
|
|
|
|
' Diagramm-Optionen
|
|
skinparam linetype ortho
|
|
hide empty members
|
|
skinparam shadowing false
|
|
skinparam defaultFontName "Segoe UI"
|
|
skinparam defaultFontSize 10
|
|
skinparam roundCorner 10
|
|
allow_mixing
|
|
|
|
' --- Enums (mit Suffix E) ---
|
|
enum SparteE {
|
|
DRESSUR,
|
|
SPRINGEN,
|
|
VIELSEITIGKEIT,
|
|
FAHREN,
|
|
VOLTIGIEREN,
|
|
WESTERN,
|
|
DISTANZ,
|
|
ISLAND,
|
|
PFERDESPORT_SPIEL,
|
|
SONDERPRUEFUNG,
|
|
SONSTIGE,
|
|
UNBEKANNT
|
|
}
|
|
enum RegelwerkTypE {
|
|
OETO,
|
|
FEI,
|
|
SONSTIGE
|
|
}
|
|
enum PruefungsaufgabeNationE {
|
|
NATIONAL_OEPS,
|
|
FEI,
|
|
SONSTIGE
|
|
}
|
|
enum PruefungsaufgabeRichtverfahrenModusE {
|
|
GM,
|
|
GT,
|
|
NICHT_SPEZIFIZIERT
|
|
}
|
|
enum PruefungsaufgabeViereckE {
|
|
VIERECK_20x40,
|
|
VIERECK_20x60,
|
|
ANDERE,
|
|
UNBEKANNT
|
|
}
|
|
enum ArtDesStechensE {
|
|
KEIN_STECHEN,
|
|
FEHLER_ZEIT_NORMAL,
|
|
FEHLER_ZEIT_AM3,
|
|
SIEGERUNDE_SR1_MIT_UEBERNAHME_GP,
|
|
SIEGERUNDE_SR2_OHNE_UEBERNAHME_GP,
|
|
ZWEI_STECHEN_AM4, ZWEI_STECHEN_AM6,
|
|
SONDERREGELUNG_AUSSCHREIBUNG
|
|
}
|
|
enum FunktionaerRolleE {
|
|
RICHTER,
|
|
RICHTER_VORSITZ,
|
|
RICHTER_BEI_C,
|
|
RICHTER_AM_ABREITEPLATZ,
|
|
PARCOURSBAUER,
|
|
PARCOURSBAU_ASSISTENT,
|
|
STEWARD,
|
|
TECHNISCHER_DELEGIERTER,
|
|
TURNIERLEITER,
|
|
TURNIERBEAUFTRAGTER,
|
|
TIERARZT_TURNIER,
|
|
HUFSCHMIED_TURNIER,
|
|
MELD,
|
|
RECHENSTELLE,
|
|
SPRECHER,
|
|
REITERSPRECHER,
|
|
ZEITNEHMER,
|
|
SCHREIBER_RICHTER,
|
|
HELFER_PARCOURS,
|
|
SONSTIGE_FUNKTION
|
|
}
|
|
enum RichterPositionE {
|
|
C,
|
|
E,
|
|
H,
|
|
B,
|
|
M,
|
|
VORSITZ,
|
|
RICHTERTURM,
|
|
SONSTIGE_POSITION
|
|
}
|
|
enum DatenQuelleE {
|
|
OEPS_ZNS,
|
|
MANUELL_NATIONAL,
|
|
MANUELL_INTERNATIONAL,
|
|
SYSTEM_GENERIERTR
|
|
}
|
|
enum NennungStatusE {
|
|
GEMELDET,
|
|
MANUELL_ERFASST,
|
|
BESTAETIGT,
|
|
NACHGENANNT,
|
|
BEZAHLT,
|
|
STARTBERECHTIGT,
|
|
ABGEMELDET_REITER,
|
|
ABGEMELDET_VERANSTALTER,
|
|
STORNIERT_SYSTEM
|
|
}
|
|
enum BeginnzeitTypE {
|
|
FIX_UM,
|
|
ANSCHLIESSEND,
|
|
CA_UM,
|
|
NACH_VORHERIGEM_BEWERB_ABTEILUNG
|
|
}
|
|
enum EventStatusE {
|
|
IN_PLANUNG,
|
|
GENEHMIGT_VERANSTALTER,
|
|
OEFFENTLICH_SICHTBAR,
|
|
AKTIV,
|
|
ABGESCHLOSSEN,
|
|
ABGESAGT
|
|
}
|
|
enum PlatzTypE {
|
|
AUSTRAGUNG,
|
|
VORBEREITUNG,
|
|
LONGIEREN,
|
|
SONSTIGES
|
|
}
|
|
enum SportfachStammdatenTypE {
|
|
DRESSURAUFGABE,
|
|
HINDERNISTYP_SPRINGEN,
|
|
WERTUNGSVERFAHREN,
|
|
RVK_PUNKTETABELLE,
|
|
OETO_REGEL_TEXT,
|
|
SONSTIGES
|
|
}
|
|
enum CupSerieTypE {
|
|
CUP,
|
|
MEISTERSCHAFT_LAND,
|
|
MEISTERSCHAFT_BUND,
|
|
SERIE,
|
|
SONDERWERTUNG
|
|
}
|
|
|
|
' #####################################################################
|
|
' ### Service OeTO-Verwaltung (Regeln, Lizenzen, Definitionen) ###
|
|
' #####################################################################
|
|
package Service_OeTO_Verwaltung {
|
|
entity OETORegelReferenz {
|
|
+ oeto_regel_referenz_id : UUID <<PK>>
|
|
--
|
|
paragraph_nummer : VARCHAR
|
|
kapitel_titel : VARCHAR?
|
|
kurzbeschreibung_regel : TEXT?
|
|
oeto_version_datum : DATE
|
|
url_detail : VARCHAR?
|
|
regelwerk_typ : RegelwerkTypE ' ÖTO oder FEI
|
|
}
|
|
|
|
' Definiert Funktionärsqualifikationen
|
|
entity QualifikationsTyp {
|
|
+ qual_typ_code : VARCHAR <<PK>> ' z.B. "R-DPF", "PB-S", "TD-NAT"
|
|
--
|
|
bezeichnung : VARCHAR
|
|
sparte : SparteE
|
|
# oeto_regel_ref_id : UUID <<FK>>?
|
|
}
|
|
QualifikationsTyp -- "?" OETORegelReferenz : unterliegt
|
|
|
|
' Deine LizenzTyp_OEPS, umbenannt für globale Lizenzdefinitionen
|
|
entity LizenzTypGlobal {
|
|
+ lizenz_typ_global_code : VARCHAR(10) <<PK>> ' z.B. "R1", "RS2", "F1", "S (Startkarte)"
|
|
--
|
|
bezeichnung : VARCHAR
|
|
sparte_primaer : SparteE? ' Hauptsparte dieser Lizenz
|
|
kategorie_lizenz_text : VARCHAR ' z.B. "Reiterlizenz", "Startkarte", "Fahrerlizenz", "Funktionärsqualifikation"
|
|
stufe : VARCHAR? ' z.B. "1", "2", "S"
|
|
beschreibung_berechtigung : TEXT?
|
|
# oeto_regel_ref_id : UUID <<FK>>?
|
|
}
|
|
LizenzTypGlobal -- "?" OETORegelReferenz : basiert auf
|
|
|
|
entity AltersklasseDefinition {
|
|
+ altersklasse_code : VARCHAR(10) <<PK>> ' z.B. "JG", "U18", "YR", "ALLG"
|
|
--
|
|
bezeichnung : VARCHAR
|
|
min_alter : INTEGER?
|
|
max_alter : INTEGER?
|
|
geschlecht_filter : CHAR(1)? ' W, M, oder null für alle
|
|
# oeto_regel_ref_id : UUID <<FK>>?
|
|
}
|
|
AltersklasseDefinition -- "?" OETORegelReferenz : definiert durch
|
|
|
|
' Für Dressuraufgaben, Richtverfahren etc.
|
|
entity Sportfachliche_Stammdaten {
|
|
+ stammdatum_id : UUID <<PK>>
|
|
--
|
|
typ : SportfachStammdatenTypE
|
|
code : VARCHAR ' z.B. "GA02/23" (Dressuraufgabe), "A2_OETO204" (Richtverfahren)
|
|
bezeichnung : VARCHAR
|
|
beschreibung_details_json : TEXT ' Strukturierte Details als JSON (z.B. Lektionen, Fehlerpunkte)
|
|
sparte_zugehoerigkeit : SparteE
|
|
nation_gueltigkeit: PruefungsaufgabeNationE? ' NATIONAL_OEPS, FEI
|
|
viereck_groesse: PruefungsaufgabeViereckE? ' Für Dressuraufgaben
|
|
richtverfahren_modus: PruefungsaufgabeRichtverfahrenModusE? ' GM/GT für Dressuraufgaben
|
|
istAktiv: Boolean
|
|
# oeto_regel_ref_id : UUID <<FK>>?
|
|
}
|
|
Sportfachliche_Stammdaten -- "?" OETORegelReferenz : referenziert
|
|
}
|
|
' --- Ende Service OeTO-Verwaltung ---
|
|
|
|
|
|
' #####################################################################
|
|
' ### Service ZNS-Daten (Staging/Rohdaten von OEPS) ###
|
|
' #####################################################################
|
|
package Service_ZNS_Daten {
|
|
entity Verein_ZNS_Staging {
|
|
+ oeps_vereins_nr : VARCHAR(4) <<PK>> ' Aus VEREIN01.dat
|
|
--
|
|
name : VARCHAR(50)
|
|
import_timestamp: TIMESTAMP
|
|
}
|
|
|
|
entity Person_ZNS_Staging {
|
|
+ oeps_satz_nr_person : VARCHAR(6) <<PK>> ' Aus LIZENZ01.dat / RICHT01.dat
|
|
--
|
|
familienname : VARCHAR(50)
|
|
vorname : VARCHAR(25)
|
|
geburtsdatum_text : VARCHAR(8) ' JJJJMMTT
|
|
geschlecht_code : CHAR(1)
|
|
nationalitaet_code : VARCHAR(3)
|
|
bundesland_code_oeps : VARCHAR(2)?
|
|
vereinsname_oeps_roh : VARCHAR(50)?
|
|
mitglied_nr_verein : VARCHAR(8)?
|
|
fei_id_person : VARCHAR(10)?
|
|
sperrliste_flag_oeps : CHAR(1)? ' "S" oder BLANK
|
|
kader_flag_oeps : CHAR(1)?
|
|
telefon_roh : VARCHAR(21)?
|
|
reiterlizenz_roh : VARCHAR(4)?
|
|
startkarte_roh : CHAR(1)?
|
|
fahrlizenz_roh : VARCHAR(2)?
|
|
altersklasse_jugend_code_oeps : VARCHAR(2)?
|
|
altersklasse_jungerreiter_code_oeps : CHAR(1)?
|
|
jahr_letzte_zahlung_lizenz_oeps : INTEGER?
|
|
lizenzinfo_raw_oeps : VARCHAR(10)?
|
|
qualifikationen_raw_oeps: VARCHAR(30)? ' Aus RICHT01.dat
|
|
import_timestamp: TIMESTAMP
|
|
}
|
|
|
|
entity Pferd_ZNS_Staging {
|
|
+ oeps_satz_nr_pferd : VARCHAR(10) <<PK>> ' Aus PFERDE01.dat
|
|
--
|
|
oeps_kopf_nr : VARCHAR(4)? ' Wird oft zusätzlich verwendet
|
|
name : VARCHAR(30)
|
|
lebensnummer : VARCHAR(9)?
|
|
geburtsjahr : INTEGER?
|
|
geschlecht_code : CHAR(1)?
|
|
farbe : VARCHAR(15)?
|
|
abstammung_vater_name : VARCHAR(30)?
|
|
abstammung_info_roh : VARCHAR(15)? ' Feld "ABSTAMMUNG"
|
|
oeps_verein_nr_pferd_roh : VARCHAR(4)?
|
|
verantwortliche_person_name_roh: VARCHAR(75)?
|
|
fei_pass_nr : VARCHAR(10)?
|
|
letzte_zahlung_pferdegebuehr_jahr : INTEGER?
|
|
import_timestamp: TIMESTAMP
|
|
}
|
|
}
|
|
' --- Ende Service ZNS-Daten ---
|
|
|
|
' ####################################################################################
|
|
' ### Domänen Service: Sportler & Pferde Verwaltung (aus ZNS und manuell) ###
|
|
' ####################################################################################
|
|
package Service_Sportler_Pferde_Verwaltung {
|
|
entity DomPerson {
|
|
+ person_id: UUID <<PK>>
|
|
--
|
|
oeps_satz_nr: VARCHAR(6) <<UQ>>?
|
|
nachname: VARCHAR
|
|
vorname: VARCHAR
|
|
geburtsdatum: DATE?
|
|
geschlecht: GeschlechtE?
|
|
nationalitaet_code: VARCHAR(3)?
|
|
fei_id: VARCHAR(10)?
|
|
telefon: VARCHAR?
|
|
email: VARCHAR?
|
|
# stamm_verein_id: UUID <<FK>>? ' Verweis auf DomVerein.verein_id
|
|
ist_gesperrt: BOOLEAN
|
|
sperr_grund: TEXT?
|
|
daten_quelle: DatenQuelleE
|
|
ist_aktiv: BOOLEAN
|
|
}
|
|
|
|
entity DomPferd {
|
|
+ pferd_id: UUID <<PK>>
|
|
--
|
|
oeps_satz_nr_pferd: VARCHAR(10) <<UQ>>?
|
|
oeps_kopf_nr: VARCHAR(4)?
|
|
name: VARCHAR
|
|
lebensnummer: VARCHAR?
|
|
geburtsjahr: INTEGER?
|
|
geschlecht_pferd: CHAR(1)? ' oder Enum
|
|
# besitzer_person_id: UUID <<FK>>?
|
|
# verantwortlicher_person_id: UUID <<FK>>?
|
|
# heimat_verein_id: UUID <<FK>>?
|
|
daten_quelle: DatenQuelleE
|
|
ist_aktiv: BOOLEAN
|
|
}
|
|
|
|
entity DomVerein {
|
|
+ verein_id: UUID <<PK>>
|
|
--
|
|
oeps_vereins_nr: VARCHAR(4) <<UQ>>
|
|
name: VARCHAR
|
|
kuerzel: VARCHAR?
|
|
bundesland_code: VARCHAR(2)?
|
|
}
|
|
|
|
entity DomLizenz {
|
|
+ lizenz_id: UUID <<PK>>
|
|
--
|
|
# person_id: UUID <<FK>>
|
|
# lizenz_typ_global_code: VARCHAR(10) <<FK>> ' Verweis auf Service_OeTO_Verwaltung.LizenzTypGlobal
|
|
gueltig_bis_jahr: INTEGER?
|
|
ist_aktiv_bezahlt: BOOLEAN ' Info aus LIZENZINFO
|
|
}
|
|
|
|
entity DomQualifikation {
|
|
+ qualifikation_id: UUID <<PK>>
|
|
--
|
|
# person_id: UUID <<FK>>
|
|
# qual_typ_code: VARCHAR <<FK>> ' Verweis auf Service_OeTO_Verwaltung.QualifikationsTyp
|
|
details: VARCHAR?
|
|
}
|
|
|
|
DomPerson "1" -- "0..*" DomLizenz : besitzt
|
|
DomLizenz -- "1" Service_OeTO_Verwaltung.LizenzTypGlobal : ist vom Typ
|
|
DomPerson "1" -- "0..*" DomQualifikation : besitzt
|
|
DomQualifikation -- "1" Service_OeTO_Verwaltung.QualifikationsTyp : ist vom Typ
|
|
DomPerson "0..*" -- "1" DomVerein : hat Stammverein
|
|
DomPferd "0..*" -- "1" DomPerson : hat Besitzer
|
|
DomPferd "0..*" -- "1" DomPerson : hat Verantwortlichen
|
|
DomPferd "0..*" -- "1" DomVerein : hat Heimatverein
|
|
}
|
|
' --- Ende Service Sportler & Pferde Verwaltung ---
|
|
|
|
|
|
' #####################################################################
|
|
' ### Service Veranstaltungsplanung (Events, Turniere, Prüfungen) ###
|
|
' #####################################################################
|
|
package Service_Veranstaltungsplanung {
|
|
' Entspricht unserem "Event"
|
|
entity VeranstaltungsRahmen {
|
|
+ veranst_rahmen_id : UUID <<PK>>
|
|
--
|
|
name : VARCHAR
|
|
datum_von_gesamt : DATE
|
|
datum_bis_gesamt : DATE
|
|
# hauptveranstalter_verein_id : UUID <<FK>> ' Verweis auf DomVerein
|
|
ort_text: VARCHAR
|
|
status: EventStatusE
|
|
}
|
|
|
|
' Entspricht unserem "Turnier"
|
|
entity Turnier_OEPS {
|
|
+ turnier_id : UUID <<PK>> ' Eigene UUID für interne Zwecke
|
|
--
|
|
# veranst_rahmen_id : UUID <<FK>>
|
|
oeps_turnier_nr : VARCHAR(5) <<UQ>> ' Offizielle OEPS Nummer
|
|
name_zusatz : VARCHAR?
|
|
datum_von_turnier : DATE
|
|
datum_bis_turnier : DATE
|
|
# oeto_kategorie_ids: List<UUID> '(FKs zu Service_OeTO_Verwaltung.BewerbsKategorieOetoDefinition)' ' Eher so'
|
|
kategorie_text_turnier : VARCHAR(50) ' Wie in SUDO, kann mehrere ÖTO Kat. enthalten, z.B. "CDN-C Neu / CDNP-C Neu"'
|
|
regelwerk_typ : RegelwerkTypE
|
|
hauptsparte: SparteE
|
|
}
|
|
|
|
' Entspricht unserer "BewerbBasis"
|
|
entity Pruefung_OEPS {
|
|
+ pruefung_db_id : UUID <<PK>>
|
|
--
|
|
# turnier_id : UUID <<FK>>
|
|
oeps_bewerb_nr_display : INTEGER ' Eindeutige Nummer pro Turnier
|
|
name_text_uebergeordnet : VARCHAR
|
|
sparte : SparteE ' Explizit, wird ggf. aus oeps_kategorie_id vorgeschlagen
|
|
# oeps_kategorie_id : UUID <<FK zu Service_OeTO_Verwaltung.BewerbsKategorieOetoDefinition>>
|
|
' # klasse_id : UUID <<FK zu Service_OeTO_Verwaltung.BewerbsKlasseDefinition>> ' Wandert in Spezifika'
|
|
' Verweise auf spartenspezifische Details '
|
|
# dressur_spezifika_id: UUID <<FK>>?
|
|
# springen_spezifika_id: UUID <<FK>>?
|
|
}
|
|
|
|
' Entspricht unserer "Abteilung"
|
|
entity Pruefung_Abteilung {
|
|
+ pruefung_abteilung_db_id : UUID <<PK>>
|
|
--
|
|
# pruefung_db_id : UUID <<FK>>
|
|
abteilungs_kennzeichen : VARCHAR ' z.B. "1", "A" -> für Anzeige "12/1"
|
|
bezeichnung_abteilung : VARCHAR?
|
|
' ... strukturierte Teilungskriterien ...
|
|
}
|
|
|
|
entity Meisterschaft_Cup_Serie {
|
|
+ mcs_id : UUID <<PK>>
|
|
--
|
|
name : VARCHAR
|
|
typ : CupSerieTypE
|
|
jahr : INTEGER
|
|
sparte : SparteE
|
|
# reglement_oeto_regel_ref_id : UUID <<FK>>?
|
|
}
|
|
|
|
entity MCS_Wertungspruefung {
|
|
# mcs_id : UUID <<PK>> <<FK>>
|
|
# pruefung_abteilung_db_id : UUID <<PK>> <<FK>>
|
|
--
|
|
faktor_fuer_wertung : DECIMAL?
|
|
}
|
|
|
|
entity Platz {
|
|
+ platz_id: UUID <<PK>>
|
|
name: VARCHAR
|
|
typ: PlatzTypE
|
|
'.. berichtFelder ..
|
|
}
|
|
|
|
entity Turnier_hat_Platz {
|
|
# turnier_id: UUID <<PK>> <<FK>>
|
|
# platz_id: UUID <<PK>> <<FK>>
|
|
verwendungszweck: VARCHAR?
|
|
}
|
|
|
|
|
|
package Sportfachliche_Details_Pruefung {
|
|
entity DressurPruefungSpezifika {
|
|
+ pruefung_db_id : UUID <<PK>> <<FK>> ' 1:1 zu Pruefung_OEPS
|
|
--
|
|
# aufgabe_stammdatum_id : UUID <<FK>> ' Zu Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ DRESSURAUFGABE)
|
|
# klasse_id : UUID <<FK>> ' Zu Service_OeTO_Verwaltung.BewerbsKlasseDefinition
|
|
# richtverfahren_id: UUID <<FK>> ' Zu Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ WERTUNGSVERFAHREN_DRESSUR)
|
|
viereck_groesse_code : PruefungsaufgabeViereckE
|
|
' geplanteRichterPositionen: List<RichterPositionE> '
|
|
}
|
|
entity SpringenPruefungSpezifika {
|
|
+ pruefung_db_id : UUID <<PK>> <<FK>> ' 1:1 zu Pruefung_OEPS
|
|
--
|
|
# klasse_id : UUID <<FK>> ' Zu Service_OeTO_Verwaltung.BewerbsKlasseDefinition (z.B. Höhe)
|
|
# richtverfahren_id: UUID <<FK>> ' Zu Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ WERTUNGSVERFAHREN_SPRINGEN)
|
|
art_des_stechens : ArtDesStechensE?
|
|
'.. parcours infos ..
|
|
}
|
|
' ... Weitere Sparten (VS, RVK) analog ...
|
|
}
|
|
|
|
' Beziehungen innerhalb Veranstaltungsplanung
|
|
VeranstaltungsRahmen "1" -- "0..*" Turnier_OEPS
|
|
Turnier_OEPS "1" -- "0..*" Pruefung_OEPS
|
|
Pruefung_OEPS "1" -- "1..*" Pruefung_Abteilung
|
|
Pruefung_OEPS "1" -- "0..1" Sportfachliche_Details_Pruefung.DressurPruefungSpezifika
|
|
Pruefung_OEPS "1" -- "0..1" Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika
|
|
' ... Beziehungen zu weiteren Spezifika ...
|
|
Meisterschaft_Cup_Serie "1" -- "0..*" MCS_Wertungspruefung
|
|
Pruefung_Abteilung "1" -- "0..*" MCS_Wertungspruefung
|
|
Turnier_OEPS "1" -- "0..*" Turnier_hat_Platz
|
|
Platz "1" -- "0..*" Turnier_hat_Platz
|
|
|
|
' Beziehungen zu Service_OeTO_Verwaltung
|
|
Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_OeTO_Verwaltung.Sportfachliche_Stammdaten : "nutzt Aufgabe"
|
|
Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_OeTO_Verwaltung.BewerbsKlasseDefinition : "hat Klasse"
|
|
Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_OeTO_Verwaltung.BewerbsKlasseDefinition : "hat Klasse"
|
|
Pruefung_OEPS -- Service_OeTO_Verwaltung.BewerbsKategorieOetoDefinition : "hat ÖTO Kategorie"
|
|
Turnier_OEPS -- Service_OeTO_Verwaltung.BewerbsKategorieOetoDefinition : "ist kategorisiert als"
|
|
|
|
' Beziehungen zu Service_Sportler_Pferde_Verwaltung (für Funktionäre etc.)
|
|
Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_Sportler_Pferde_Verwaltung.DomPerson : "Parcoursdesigner" (als FK)
|
|
}
|
|
' --- Ende Service Veranstaltungsplanung ---
|
|
|
|
|
|
' #####################################################################
|
|
' ### Service Nennungsabwicklung (Nennungen, Startlisten, Ergebnisse) ###
|
|
' #####################################################################
|
|
package Service_Nennungsabwicklung {
|
|
' Umbenannt von Nennung_OEPS für Domänenkontext
|
|
entity Nennung {
|
|
+ nennung_id : UUID <<PK>>
|
|
--
|
|
# pruefung_abteilung_db_id : UUID <<FK>>
|
|
# teilnehmer_person_id : UUID <<FK>> ' Verweis auf DomPerson
|
|
# genanntes_pferd_id : UUID <<FK>> ' Verweis auf DomPferd
|
|
# genutzte_lizenz_id: UUID <<FK>>? ' Verweis auf DomLizenz des Teilnehmers
|
|
nennungs_zeitpunkt : TIMESTAMP
|
|
status_nennung : NennungStatusE
|
|
kopf_nr_pferd_fuer_nennung : VARCHAR(4)? ' Für Anzeige/Abgleich, Pferd ist aber per ID verknüpft
|
|
startgeld_bezahlt: BOOLEAN
|
|
pferdepass_kontrolliert: BOOLEAN
|
|
}
|
|
|
|
entity NennungsTeilnehmerSnapshot {
|
|
+ snapshot_id: UUID <<PK>>
|
|
# nennung_id: UUID <<FK>> (1:1 oder 1:0..1)
|
|
--
|
|
' Gesnapshotete Personendaten zum Zeitpunkt der Nennung '
|
|
person_oeps_satz_nr: VARCHAR(6)?
|
|
person_nachname: VARCHAR
|
|
person_vorname: VARCHAR
|
|
person_verein_name_snapshot: VARCHAR? ' Name des Vereins zum Zeitpunkt der Nennung '
|
|
relevante_lizenz_kuerzel_snapshot: VARCHAR?
|
|
' Gesnapshotete Pferdedaten zum Zeitpunkt der Nennung '
|
|
pferd_oeps_kopf_nr: VARCHAR(4)?
|
|
pferd_name_snapshot: VARCHAR
|
|
}
|
|
Nennung "1" -- "0..1" NennungsTeilnehmerSnapshot
|
|
|
|
entity Startfolge {
|
|
+ startfolge_id: UUID <<PK>>
|
|
# nennung_id: UUID <<FK>>
|
|
start_nummer_display: INTEGER ' Die sichtbare Startnummer
|
|
start_zeit_geplant: TIMESTAMP?
|
|
start_zeit_effektiv: TIMESTAMP?
|
|
status_start: VARCHAR ' z.B. GENANNT, GESTARTET, ABGEMELDET
|
|
s4_kader_flag: BOOLEAN ' Für spezielle Kaderwertung
|
|
}
|
|
' Eine Nennung führt zu max. einem Startfolgeeintrag pro (Teil-)Prüfung
|
|
Nennung "1" -- "0..1" Startfolge
|
|
|
|
' Umbenannt von Ergebnis_OEPS_Zeile
|
|
entity Ergebnis_Zeile {
|
|
+ ergebnis_zeile_id : UUID <<PK>>
|
|
--
|
|
# startfolge_id : UUID <<FK>>
|
|
platz : INTEGER?
|
|
ausschluss_disq_code : CHAR(1)?
|
|
punkte_wertnote_text_ergebnis_roh : VARCHAR(10)? ' Rohwert, wie erfasst
|
|
zeit_prozent_text_ergebnis_roh : VARCHAR(10)? ' Rohwert, wie erfasst
|
|
stechen_sr_info_text_ergebnis_roh : VARCHAR(4)?
|
|
geldpreis_betrag_ergebnis : DECIMAL?
|
|
nation_code_fuer_ergebnis : VARCHAR(3)?
|
|
platziert_flag : BOOLEAN
|
|
' Verweise auf spartenspezifische Ergebnisdetails '
|
|
# dressur_ergebnis_spezifika_id: UUID <<FK>>?
|
|
# springen_ergebnis_spezifika_id: UUID <<FK>>?
|
|
}
|
|
Startfolge "1" -- "0..1" Ergebnis_Zeile
|
|
|
|
package Sportfachliche_Details_Ergebnis {
|
|
entity DressurErgebnisSpezifika {
|
|
+ ergebnis_zeile_id : UUID <<PK>> <<FK>>
|
|
--
|
|
gesamt_wertnote : DECIMAL(5,3)?
|
|
gesamt_prozent : DECIMAL(5,2)?
|
|
' Hier könnten Details zu Richterbewertungen pro Lektion folgen (Array von JSONs oder eigene Entitäten)
|
|
}
|
|
entity SpringenErgebnisSpezifika {
|
|
+ ergebnis_zeile_id : UUID <<PK>> <<FK>>
|
|
--
|
|
stilnote_gesamt : DECIMAL(3,1)? ' Falls zutreffend
|
|
}
|
|
' Kind von SpringenErgebnisSpezifika oder direkt von Ergebnis_Zeile
|
|
entity SpringenUmlaufErgebnis {
|
|
+ umlauf_ergebnis_id : UUID <<PK>>
|
|
--
|
|
# springen_ergebnis_spezifika_id : UUID <<FK>> ' oder ergebnis_zeile_id
|
|
umlauf_oder_stechen_nr : INTEGER ' 1=Grundumlauf, 2=1.Stechen etc.
|
|
fehlerpunkte_hindernis : DECIMAL(4,2)?
|
|
fehlerpunkte_zeit : DECIMAL(4,2)?
|
|
zeit_benoetigt_sek : DECIMAL(5,2)?
|
|
stilnote_umlauf : DECIMAL(3,1)?
|
|
}
|
|
SpringenErgebnisSpezifika "1" -- "0..*" SpringenUmlaufErgebnis : hat Umläufe/Stechen
|
|
' ... Weitere Sparten (VS, RVK) analog ...
|
|
}
|
|
Ergebnis_Zeile "1" -- "0..1" Sportfachliche_Details_Ergebnis.DressurErgebnisSpezifika
|
|
Ergebnis_Zeile "1" -- "0..1" Sportfachliche_Details_Ergebnis.SpringenErgebnisSpezifika
|
|
}
|
|
' --- Ende Service Nennungsabwicklung ---
|
|
|
|
|
|
' #####################################################################
|
|
' ### Paketübergreifende Beziehungen (Auswahl) ###
|
|
' #####################################################################
|
|
|
|
' Veranstaltungsplanung <--> OeTO-Verwaltung
|
|
Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_OeTO_Verwaltung.Sportfachliche_Stammdaten : "nutzt Aufgabe"
|
|
Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_OeTO_Verwaltung.BewerbsKlasseDefinition : "hat Klasse"
|
|
Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_OeTO_Verwaltung.BewerbsKlasseDefinition : "hat Klasse"
|
|
Service_Veranstaltungsplanung.Pruefung_OEPS -- Service_OeTO_Verwaltung.BewerbsKategorieOetoDefinition : "hat ÖTO Kategorie"
|
|
Service_Veranstaltungsplanung.Turnier_OEPS -- Service_OeTO_Verwaltung.BewerbsKategorieOetoDefinition : "ist kategorisiert als"
|
|
|
|
' Veranstaltungsplanung <--> Sportler & Pferde Verwaltung (für Funktionäre)
|
|
Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_Sportler_Pferde_Verwaltung.DomPerson : "Parcoursdesigner"
|
|
|
|
' Nennungsabwicklung <--> Veranstaltungsplanung
|
|
Service_Nennungsabwicklung.Nennung -- Service_Veranstaltungsplanung.Pruefung_Abteilung : "für"
|
|
|
|
' Nennungsabwicklung <--> Sportler & Pferde Verwaltung
|
|
Service_Nennungsabwicklung.Nennung -- Service_Sportler_Pferde_Verwaltung.DomPerson : "durch Reiter"
|
|
Service_Nennungsabwicklung.Nennung -- Service_Sportler_Pferde_Verwaltung.DomPferd : "mit Pferd"
|
|
Service_Nennungsabwicklung.Nennung -- Service_Sportler_Pferde_Verwaltung.DomLizenz : "unter Lizenz (genutzte)"
|
|
|
|
|
|
' ZNS Import Logik (konzeptionell)
|
|
' Service_ZNS_Daten.Person_ZNS_Staging -> Service_Sportler_Pferde_Verwaltung.DomPerson
|
|
' Service_ZNS_Daten.Pferd_ZNS_Staging -> Service_Sportler_Pferde_Verwaltung.DomPferd
|
|
' Service_ZNS_Daten.Verein_ZNS_Staging -> Service_Sportler_Pferde_Verwaltung.DomVerein
|
|
' Service_ZNS_Daten.Person_ZNS_Staging (lizenzinfo_raw_oeps, etc.) -> Service_Sportler_Pferde_Verwaltung.DomLizenz (über Service_OeTO_Verwaltung.LizenzTypGlobal)
|
|
|
|
@enduml
|