OeTo-DB-Modell
This commit is contained in:
@@ -0,0 +1,306 @@
|
||||
@startuml
|
||||
' 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,
|
||||
MELDESTELLEMPERSONAL,
|
||||
RECHENSTELLE,
|
||||
SPRECHER,
|
||||
REITERSPRECHER,
|
||||
ZEITNEHMER,
|
||||
SCHREIBER_RICHTER,
|
||||
HELFER_PARCOURS,
|
||||
SONSTIGE_FUNKTION
|
||||
}
|
||||
enum RichterPositionE {
|
||||
C, E, H, B, M,
|
||||
VORSITZ, 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
|
||||
}
|
||||
|
||||
|
||||
' --- Entitäten für verwaltbare Auswahllisten (Lookup Tables / Master Data) ---
|
||||
entity "Pruefungsaufgabe" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
kuerzel: String
|
||||
nameLang: String
|
||||
sparte: SparteE
|
||||
nation: PruefungsaufgabeNationE
|
||||
'..weitere..
|
||||
}
|
||||
|
||||
entity "Richtverfahren" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
code: String
|
||||
bezeichnung: String
|
||||
sparte: SparteE
|
||||
}
|
||||
|
||||
entity "BewerbsKlasseDefinition" as BewerbsKlasseDef {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
kuerzel: String
|
||||
bezeichnung: String
|
||||
sparte: SparteE
|
||||
}
|
||||
|
||||
entity "BewerbsKategorieOetoDefinition" as BewerbsKatOetoDef {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
kuerzel: String 'z.B. "CDN-C Neu"'
|
||||
bezeichnung: String
|
||||
abgeleiteteSparte: SparteE ' Automatisch aus Kuerzel oder manuell?'
|
||||
}
|
||||
|
||||
' --- Kern-Entitäten ---
|
||||
entity "Event" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
bezeichnung: String
|
||||
datumVon: LocalDate
|
||||
datumBis: LocalDate
|
||||
}
|
||||
|
||||
entity "Turnier" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
eventId: UUID (FK)
|
||||
oepsTurnierNr: String
|
||||
titel: String
|
||||
' sparte: SparteE ' Wird nun aus oetoKategorieIds abgeleitet oder ist spezifisch für das Turnier'
|
||||
oetoKategorieIds: List<UUID> '(FKs zu BewerbsKatOetoDef)'
|
||||
regelwerkTyp: RegelwerkTypE
|
||||
datumVon: LocalDate ' Eigenes Datum pro Turnier'
|
||||
datumBis: LocalDate ' Eigenes Datum pro Turnier'
|
||||
}
|
||||
|
||||
entity "BewerbBasis" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
turnierId: UUID (FK)
|
||||
nummerInAusschreibung: Integer ' Eindeutig pro Turnier'
|
||||
uebergeordneteBezeichnung: String
|
||||
sparte: SparteE ' Bleibt explizit, kann aus oetoKategorieId vorgeschlagen werden'
|
||||
oetoKategorieId: UUID (FK zu BewerbsKatOetoDef.id) ' Die spezifische ÖTO Kategorie dieses Bewerbs'
|
||||
' klasseId hier entfernt, wandert in spartspezifische Details '
|
||||
}
|
||||
|
||||
entity "DressurBewerbDetails" {
|
||||
+ bewerbBasisId: UUID (PK, FK)
|
||||
--
|
||||
pruefungsaufgabeId: UUID (FK)
|
||||
richtverfahrenId: UUID (FK)
|
||||
klasseId: UUID (FK zu BewerbsKlasseDef.id)? ' Klasse spezifisch für Dressur'
|
||||
' zugewieseneFunktionaere: List<BewerbFunktionaerZuordnung> '
|
||||
}
|
||||
|
||||
entity "SpringBewerbDetails" {
|
||||
+ bewerbBasisId: UUID (PK, FK)
|
||||
--
|
||||
richtverfahrenId: UUID (FK)
|
||||
artDesStechens: ArtDesStechensE?
|
||||
klasseId: UUID (FK zu BewerbsKlasseDef.id)? ' Klasse spezifisch für Springen (z.B. Höhe)'
|
||||
' zugewieseneFunktionaere: List<BewerbFunktionaerZuordnung> '
|
||||
}
|
||||
|
||||
entity "BewerbFunktionaerZuordnung" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
' Entweder zu bewerbBasisId oder besser zu spartspezifischer DetailId '
|
||||
' dressurBewerbDetailsId: UUID (FK)? '
|
||||
' springBewerbDetailsId: UUID (FK)? '
|
||||
bewerbBasisId: UUID (FK) ' Allgemeine Zuordnung, Rolle entscheidet über Relevanz '
|
||||
personId: UUID (FK)
|
||||
funktionaerRolle: FunktionaerRolleE
|
||||
positionImBewerb: String? ' Für Richterpositionen etc. '
|
||||
}
|
||||
|
||||
entity "Abteilung" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
bewerbBasisId: UUID (FK)
|
||||
abteilungsKennzeichen: String ' z.B. "1", "A" -> ergibt mit BewerbBasis.nummer "12/1" '
|
||||
bezeichnungOeffentlich: String?
|
||||
' ... Teilungskriterien (strukturiert) ...
|
||||
}
|
||||
|
||||
entity "Person" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
nachname: String
|
||||
vorname: String
|
||||
}
|
||||
|
||||
entity "Pferd" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
name: String
|
||||
}
|
||||
|
||||
entity "Nennung" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
abteilungId: UUID (FK)
|
||||
personId: UUID (FK)
|
||||
pferdId: UUID (FK)
|
||||
}
|
||||
|
||||
entity "Startfolge" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
nennungId: UUID (FK)
|
||||
startNummer: Int
|
||||
}
|
||||
|
||||
entity "Ergebnis" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
startfolgeId: UUID (FK)
|
||||
platzierung: Int?
|
||||
}
|
||||
|
||||
entity "FunktionaerEinsatz" {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
personId: UUID (FK)
|
||||
eventId: UUID (FK)
|
||||
rolle: FunktionaerRolleE
|
||||
positionRichter: RichterPositionE?
|
||||
geplanterStart: LocalDateTime
|
||||
geplantesEnde: LocalDateTime
|
||||
}
|
||||
|
||||
entity "CupOderMeisterschaft" as Cup {
|
||||
+ id: UUID (PK)
|
||||
--
|
||||
name: String
|
||||
jahr: Int
|
||||
sparte: SparteE
|
||||
}
|
||||
|
||||
' --- Beziehungen (Auswahl) ---
|
||||
Event "1" -- "0..*" Turnier
|
||||
Turnier "1" -- "0..*" BewerbBasis
|
||||
BewerbBasis "1" -- "0..1" DressurDetails
|
||||
BewerbBasis "1" -- "0..1" SpringDetails
|
||||
BewerbBasis "1" -- "1..*" Abteilung
|
||||
|
||||
Abteilung "1" -- "0..*" Nennung
|
||||
Nennung --> Person
|
||||
Nennung --> Pferd
|
||||
Nennung "1" -- "0..1" Startfolge
|
||||
Startfolge "1" -- "0..1" Ergebnis
|
||||
|
||||
BewerbBasis "1" -- "0..*" BewerbFunktionaerZuordnung : "hat Funktionäre"
|
||||
Person "1" -- "0..*" BewerbFunktionaerZuordnung
|
||||
|
||||
' Oder Funktionärszuweisung über FunktionaerEinsatz und Zeit/Bewerbs-Matching '
|
||||
Event "1" -- "0..*" FunktionaerEinsatz
|
||||
Person "1" -- "0..*" FunktionaerEinsatz
|
||||
|
||||
Cup "1" -- "0..*" Turnier : "umfasst Turniere \n(über Zwischentabelle)"
|
||||
' ... weitere Beziehungen ...
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user