@startuml !theme vibrant title Datenbankmodell ÖTO - Service-Orientierte Modulare Struktur (inkl. aller Sparten) ' ##################################################################### ' ### Service OeTO-Verwaltung (Regeln, Lizenzen, Definitionen) ### ' ##################################################################### package Service_OeTO_Verwaltung { entity OETORegelReferenz { + oeto_regel_referenz_id : UUID <> -- paragraph_nummer : VARCHAR kapitel_titel : VARCHAR kurzbeschreibung_regel : TEXT oeto_version_datum : DATE url_detail : VARCHAR } entity QualifikationsTyp { + qual_typ_code : VARCHAR <> -- bezeichnung : VARCHAR sparte : VARCHAR # oeto_regel_ref_id : UUID <> } entity LizenzTyp_OEPS { + lizenz_typ_code : VARCHAR(4) <> -- bezeichnung : VARCHAR sparte : VARCHAR # oeto_regel_ref_id : UUID <> } entity AltersklasseDefinition { + altersklasse_code : VARCHAR(4) <> -- bezeichnung : VARCHAR min_alter : INTEGER max_alter : INTEGER # oeto_regel_ref_id : UUID <> } entity Sportfachliche_Stammdaten { + stammdatum_id : UUID <> -- typ : VARCHAR ' z.B. DRESSURAUFGABE, HINDERNISTYP_SPRINGEN, WERTUNGSVERFAHREN_SPRINGEN, RVK_PUNKTETABELLE code : VARCHAR ' z.B. "GA02/23", "OXER_STANDARD", "FEHLER_ZEIT", "RVK_STANDARD_2025" bezeichnung : VARCHAR beschreibung_details : TEXT sparte_zugehoerigkeit : VARCHAR ' Für welche Sparte(n) ist dieser Stammdatensatz relevant # oeto_regel_ref_id : UUID <> } } ' --- Ende Service OeTO-Verwaltung --- ' ##################################################################### ' ### Service ZNS-Daten (Import/Export von OEPS Stammdaten) ### ' ##################################################################### package Service_ZNS_Daten { entity Verein_ZNS { + oeps_vereins_nr : VARCHAR(4) <> -- name : VARCHAR(50) } entity Person_ZNS { + oeps_satz_nr_person : VARCHAR(6) <> -- familienname : VARCHAR(50) vorname : VARCHAR(25) geburtsdatum : DATE geschlecht : CHAR(1) nationalitaet_code : VARCHAR(3) # oeps_hauptverein_nr : VARCHAR(4) <> mitglieds_nr_verein : VARCHAR(8) fei_id_person : VARCHAR(10) ist_auf_sperrliste : BOOLEAN kader_flag : CHAR(1) telefon : VARCHAR(21) } entity Person_hat_Lizenz_ZNS { # oeps_satz_nr_person : VARCHAR(6) <> # lizenz_typ_code : VARCHAR(4) <> -- PRIMARY KEY (oeps_satz_nr_person, lizenz_typ_code) bezahlt_im_jahr : INTEGER } entity Person_hat_Qualifikation_ZNS { # oeps_satz_nr_person : VARCHAR(6) <> # qual_typ_code : VARCHAR <> -- PRIMARY KEY (oeps_satz_nr_person, qual_typ_code) } entity Pferd_ZNS { + oeps_satz_nr_pferd : VARCHAR(10) <> -- name : VARCHAR(30) lebensnummer : VARCHAR(9) geburtsjahr : INTEGER geschlecht : CHAR(1) farbe : VARCHAR(15) abstammung_vater_name : VARCHAR(30) # oeps_verein_nr_pferd : VARCHAR(4) <> letzte_zahlung_pferdegebuehr_jahr : INTEGER fei_pass_nr : VARCHAR(10) } } ' --- Ende Service ZNS-Daten --- ' ##################################################################### ' ### Service Veranstaltungsplanung (Events, Turniere, Bewerbe) ### ' ##################################################################### package Service_Veranstaltungsplanung { entity VeranstaltungsRahmen { + veranst_rahmen_id : UUID <> -- name : VARCHAR ' # austragungsort_id : UUID <> datum_von_gesamt : DATE datum_bis_gesamt : DATE # hauptveranstalter_verein_nr : VARCHAR(4) <> beschreibung : TEXT } entity Turnier_OEPS { + oeps_turnier_nr : VARCHAR(5) <> -- # veranst_rahmen_id : UUID <> name_zusatz : VARCHAR datum_von_turnier : DATE datum_bis_turnier : DATE kategorie_text_turnier : VARCHAR(25) turnierart_sparte : VARCHAR ' # ausschreibung_dok_id : UUID <> } entity Pruefung_OEPS { + pruefung_db_id : UUID <> -- # oeps_turnier_nr : VARCHAR(5) <> oeps_bewerb_nr_display : VARCHAR(3) name_text_pruefung : VARCHAR(35) klasse_text : VARCHAR(4) kategorie_text_pruefung : VARCHAR(8) datum_pruefung : DATE art_disziplin_haupt : VARCHAR ' Zur Filterung für spezifische Details: Dressur, Springen, Vielseitigkeit, RVK # oeto_regel_ref_id_pruefung : UUID <> } entity Pruefung_Abteilung { + pruefung_abteilung_db_id : UUID <> -- # pruefung_db_id : UUID <> oeps_abteilung_nr : INTEGER bezeichnung_abteilung : VARCHAR anzahl_starter_abteilung_gemeldet : INTEGER geldpreis_summe_abteilung : DECIMAL } entity Meisterschaft_Cup_Serie { + mcs_id : UUID <> -- name : VARCHAR typ : VARCHAR jahr : INTEGER sparte : VARCHAR # oeto_regel_ref_id_mcs : UUID <> } entity MCS_Wertungspruefung { # mcs_id : UUID <> # pruefung_abteilung_db_id : UUID <> -- PRIMARY KEY (mcs_id, pruefung_abteilung_db_id) faktor_fuer_wertung : DECIMAL bemerkung : VARCHAR } ' --- Spartenspezifische Details für Prüfungen --- package Sportfachliche_Details_Pruefung { entity DressurPruefungSpezifika { # pruefung_db_id : UUID <> <> -- # aufgabe_stammdatum_id : UUID <> ' Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ DRESSURAUFGABE) platz_groesse_code : VARCHAR # oeto_regel_ref_id_dressur : UUID <> } entity SpringenPruefungSpezifika { # pruefung_db_id : UUID <> <> -- # parcours_designer_person_id : VARCHAR(6) <> ' Service_ZNS_Daten.Person_ZNS anzahl_hindernisse : INTEGER hoehe_max_cm : INTEGER erlaubte_zeit_sek : INTEGER # wertungs_verfahren_stammdatum_id : UUID <> ' Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ WERTUNGSVERFAHREN_SPRINGEN) anzahl_umlaeufe : INTEGER anzahl_stechen : INTEGER # oeto_regel_ref_id_springen : UUID <> } entity VielseitigkeitPruefungSpezifika { # pruefung_db_id : UUID <> <> ' Hauptprüfung VS -- # dressur_aufgabe_stammdatum_id : UUID <> ' Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ DRESSURAUFGABE) gelaende_laenge_m : INTEGER gelaende_anzahl_hindernisse : INTEGER gelaende_erlaubte_zeit_sek : INTEGER gelaende_optimalzeit_sek : INTEGER springen_parcours_anforderungen_text : VARCHAR # oeto_regel_ref_id_vs : UUID <> } entity ReitervierkampfPruefungSpezifika { # pruefung_db_id : UUID <> <> -- dressur_anforderungen_text : VARCHAR ' oder Verweis auf Aufgabe springen_anforderungen_text : VARCHAR ' oder Verweis auf Parcoursdetails lauf_distanz_m : INTEGER schwimm_distanz_m : INTEGER # punkte_tabelle_stammdatum_id : UUID <> ' Service_OeTO_Verwaltung.Sportfachliche_Stammdaten (Typ RVK_PUNKTETABELLE) # oeto_regel_ref_id_rvk : UUID <> } } } ' --- Ende Service Veranstaltungsplanung --- ' ##################################################################### ' ### Service Nennungsabwicklung (Nennungen, Ergebnisse) ### ' ##################################################################### package Service_Nennungsabwicklung { entity Nennung_OEPS { + nennung_db_id : UUID <> -- # pruefung_abteilung_db_id : UUID <> # oeps_satz_nr_reiter : VARCHAR(6) <> # oeps_satz_nr_pferd : VARCHAR(10) <> # genutzte_lizenz_person_satz_nr : VARCHAR(6) <> # genutzte_lizenz_typ_code : VARCHAR(4) <> nennungs_zeitpunkt : TIMESTAMP status_nennung : VARCHAR kopf_nr_pferd_fuer_nennung : VARCHAR(4) } entity Ergebnis_OEPS_Zeile { + ergebnis_zeile_db_id : UUID <> -- # nennung_db_id : UUID <> # pruefung_abteilung_db_id : UUID <> platz : INTEGER ausschluss_disq_code : CHAR(1) punkte_wertnote_text_ergebnis : VARCHAR(6) zeit_prozent_text_ergebnis : VARCHAR(5) stechen_sr_info_text_ergebnis : VARCHAR(4) geldpreis_betrag_ergebnis : DECIMAL nation_code_fuer_ergebnis : VARCHAR(3) platziert_flag : CHAR(1) } ' --- Spartenspezifische Details für Ergebnisse --- package Sportfachliche_Details_Ergebnis { entity DressurErgebnisSpezifika { # ergebnis_zeile_db_id : UUID <> <> -- gesamt_wertnote : DECIMAL(5,3) gesamt_prozent : DECIMAL(5,2) ' Hier könnten Details zu Richterbewertungen pro Lektion folgen (eigene Entitäten) } entity SpringenErgebnisSpezifika { # ergebnis_zeile_db_id : UUID <> <> -- stilnote_gesamt : DECIMAL(3,1) ' Falls zutreffend ' Für Details pro Umlauf/Stechen: separate Entität SpringenUmlaufErgebnis } ' Kind von SpringenErgebnisSpezifika oder direkt von Ergebnis_OEPS_Zeile entity SpringenUmlaufErgebnis { + umlauf_ergebnis_id : UUID <> -- # ergebnis_zeile_db_id : UUID <> ' oder springen_ergebnis_spezifika_id umlauf_oder_stechen_nr : INTEGER ' 1=Grundumlauf, 2=Stechen etc. fehlerpunkte_hindernis : DECIMAL(4,2) fehlerpunkte_zeit : DECIMAL(4,2) zeit_benoetigt_sek : DECIMAL(5,2) stilnote_umlauf : DECIMAL(3,1) } entity VielseitigkeitErgebnisSpezifika { # ergebnis_zeile_db_id : UUID <> <> ' Gesamtergebnis VS -- minuspunkte_dressur : DECIMAL(5,2) minuspunkte_gelaende_hindernis : DECIMAL(5,2) minuspunkte_gelaende_zeit : DECIMAL(5,2) minuspunkte_springen_hindernis : DECIMAL(5,2) minuspunkte_springen_zeit : DECIMAL(5,2) gesamt_minuspunkte : DECIMAL(5,2) ' Ggf. Verweise auf Detailergebnisse der Teilprüfungen, wenn diese als eigene Ergebnis_OEPS_Zeile erfasst werden } entity ReitervierkampfErgebnisSpezifika { # ergebnis_zeile_db_id : UUID <> <> ' Gesamtergebnis RVK -- punkte_dressur : INTEGER leistung_dressur_roh : VARCHAR ' z.B. Wertnote punkte_springen : INTEGER leistung_springen_roh : VARCHAR ' z.B. Fehler/Zeit punkte_laufen : INTEGER leistung_laufen_roh : VARCHAR ' z.B. Zeit punkte_schwimmen : INTEGER leistung_schwimmen_roh : VARCHAR ' z.B. Zeit gesamt_punkte_rvk : INTEGER } } } ' --- Ende Service Nennungsabwicklung --- ' ##################################################################### ' ### Definition der Beziehungen (insbesondere Paketübergreifend) ### ' ##################################################################### ' Service OeTO-Verwaltung Beziehungen Service_OeTO_Verwaltung.QualifikationsTyp -- Service_OeTO_Verwaltung.OETORegelReferenz Service_OeTO_Verwaltung.LizenzTyp_OEPS -- Service_OeTO_Verwaltung.OETORegelReferenz Service_OeTO_Verwaltung.AltersklasseDefinition -- Service_OeTO_Verwaltung.OETORegelReferenz Service_OeTO_Verwaltung.Sportfachliche_Stammdaten -- Service_OeTO_Verwaltung.OETORegelReferenz ' Service ZNS-Daten Beziehungen Service_ZNS_Daten.Person_ZNS -- Service_ZNS_Daten.Verein_ZNS Service_ZNS_Daten.Person_hat_Lizenz_ZNS -- Service_ZNS_Daten.Person_ZNS Service_ZNS_Daten.Person_hat_Lizenz_ZNS -- Service_OeTO_Verwaltung.LizenzTyp_OEPS Service_ZNS_Daten.Person_hat_Qualifikation_ZNS -- Service_ZNS_Daten.Person_ZNS Service_ZNS_Daten.Person_hat_Qualifikation_ZNS -- Service_OeTO_Verwaltung.QualifikationsTyp Service_ZNS_Daten.Pferd_ZNS -- Service_ZNS_Daten.Verein_ZNS ' Service Veranstaltungsplanung Beziehungen Service_Veranstaltungsplanung.VeranstaltungsRahmen -- Service_ZNS_Daten.Verein_ZNS : "veranstaltet von" Service_Veranstaltungsplanung.Turnier_OEPS -- Service_Veranstaltungsplanung.VeranstaltungsRahmen : "ist Teil von" Service_Veranstaltungsplanung.Pruefung_OEPS -- Service_Veranstaltungsplanung.Turnier_OEPS : "gehört zu" Service_Veranstaltungsplanung.Pruefung_OEPS -- Service_OeTO_Verwaltung.OETORegelReferenz : "unterliegt Regel" Service_Veranstaltungsplanung.Pruefung_Abteilung -- Service_Veranstaltungsplanung.Pruefung_OEPS : "ist Abteilung von" Service_Veranstaltungsplanung.Meisterschaft_Cup_Serie -- Service_OeTO_Verwaltung.OETORegelReferenz : "hat Regelwerk" Service_Veranstaltungsplanung.MCS_Wertungspruefung -- Service_Veranstaltungsplanung.Meisterschaft_Cup_Serie Service_Veranstaltungsplanung.MCS_Wertungspruefung -- Service_Veranstaltungsplanung.Pruefung_Abteilung ' Spartendetails für Prüfung Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_Veranstaltungsplanung.Pruefung_OEPS Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_OeTO_Verwaltung.Sportfachliche_Stammdaten : "nutzt Aufgabe" Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.DressurPruefungSpezifika -- Service_OeTO_Verwaltung.OETORegelReferenz Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_Veranstaltungsplanung.Pruefung_OEPS Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_ZNS_Daten.Person_ZNS : "Parcoursdesigner" Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_OeTO_Verwaltung.Sportfachliche_Stammdaten : "nach Wertungsart" Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.SpringenPruefungSpezifika -- Service_OeTO_Verwaltung.OETORegelReferenz Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.VielseitigkeitPruefungSpezifika -- Service_Veranstaltungsplanung.Pruefung_OEPS Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.VielseitigkeitPruefungSpezifika -- Service_OeTO_Verwaltung.Sportfachliche_Stammdaten : "nutzt Dressuraufgabe" Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.VielseitigkeitPruefungSpezifika -- Service_OeTO_Verwaltung.OETORegelReferenz Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.ReitervierkampfPruefungSpezifika -- Service_Veranstaltungsplanung.Pruefung_OEPS Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.ReitervierkampfPruefungSpezifika -- Service_OeTO_Verwaltung.Sportfachliche_Stammdaten : "nutzt Punktetabelle" Service_Veranstaltungsplanung.Sportfachliche_Details_Pruefung.ReitervierkampfPruefungSpezifika -- Service_OeTO_Verwaltung.OETORegelReferenz ' Service Nennungsabwicklung Beziehungen Service_Nennungsabwicklung.Nennung_OEPS -- Service_Veranstaltungsplanung.Pruefung_Abteilung : "für" Service_Nennungsabwicklung.Nennung_OEPS -- Service_ZNS_Daten.Person_ZNS : "durch Reiter" Service_Nennungsabwicklung.Nennung_OEPS -- Service_ZNS_Daten.Pferd_ZNS : "mit Pferd" Service_Nennungsabwicklung.Nennung_OEPS -- Service_ZNS_Daten.Person_hat_Lizenz_ZNS : "unter Lizenz" Service_Nennungsabwicklung.Ergebnis_OEPS_Zeile -- Service_Nennungsabwicklung.Nennung_OEPS : "von" Service_Nennungsabwicklung.Ergebnis_OEPS_Zeile -- Service_Veranstaltungsplanung.Pruefung_Abteilung : "in Abteilung" ' Spartendetails für Ergebnis Service_Nennungsabwicklung.Sportfachliche_Details_Ergebnis.DressurErgebnisSpezifika -- Service_Nennungsabwicklung.Ergebnis_OEPS_Zeile Service_Nennungsabwicklung.Sportfachliche_Details_Ergebnis.SpringenErgebnisSpezifika -- Service_Nennungsabwicklung.Ergebnis_OEPS_Zeile Service_Nennungsabwicklung.Sportfachliche_Details_Ergebnis.SpringenUmlaufErgebnis -- Service_Nennungsabwicklung.Sportfachliche_Details_Ergebnis.SpringenErgebnisSpezifika : "Detail zu" ' Oder zu Ergebnis_OEPS_Zeile Service_Nennungsabwicklung.Sportfachliche_Details_Ergebnis.VielseitigkeitErgebnisSpezifika -- Service_Nennungsabwicklung.Ergebnis_OEPS_Zeile Service_Nennungsabwicklung.Sportfachliche_Details_Ergebnis.ReitervierkampfErgebnisSpezifika -- Service_Nennungsabwicklung.Ergebnis_OEPS_Zeile ' --- Allgemeine Hinweise --- ' - Alle vier Sparten (Dressur, Springen, Vielseitigkeit, Reitervierkampf) sind nun mit spezifischen ' Detailentitäten für Prüfung und Ergebnis exemplarisch im Modell enthalten. ' - Die Komplexität und der Detaillierungsgrad dieser spartenspezifischen Entitäten können je nach ' Anforderung noch deutlich erweitert werden (z.B. detaillierte Hindernisprotokolle im Springen, ' Richterbewertungsbögen für Dressur, Phasen-Ergebnisse für Vielseitigkeit). ' - Dieses Diagramm stellt einen umfassenden Entwurf dar, der als Grundlage für die weitere ' iterative Verfeinerung dienen kann. @enduml