PlantUML ER-Modell
This commit is contained in:
parent
0cebc711cf
commit
c738d9952b
|
|
@ -1,131 +1,371 @@
|
||||||
@startuml
|
@startuml
|
||||||
' Allgemeines Layout
|
' Diagramm-Optionen
|
||||||
skinparam linetype ortho
|
skinparam linetype ortho
|
||||||
hide empty members
|
hide empty members
|
||||||
|
skinparam shadowing false
|
||||||
|
skinparam defaultFontName "Segoe UI"
|
||||||
|
skinparam defaultFontSize 11
|
||||||
|
skinparam roundCorner 10
|
||||||
|
allow_mixing
|
||||||
|
|
||||||
' Entitäten
|
' --- Enums (Auswahl, können bei Bedarf erweitert werden) ---
|
||||||
entity "Event" as Event {
|
enum SparteEnum {
|
||||||
|
DRESSUR
|
||||||
|
SPRINGEN
|
||||||
|
VIELSEITIGKEIT
|
||||||
|
FAHREN
|
||||||
|
VOLTIGIEREN
|
||||||
|
WESTERN
|
||||||
|
DISTANZ
|
||||||
|
ISLAND
|
||||||
|
PFERDESPORT_SPIEL
|
||||||
|
SONDERPRUEFUNG
|
||||||
|
SONSTIGE
|
||||||
|
UNBEKANNT
|
||||||
|
}
|
||||||
|
|
||||||
|
enum RegelwerkTypEnum {
|
||||||
|
OETO
|
||||||
|
FEI
|
||||||
|
SONSTIGE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum PruefungsaufgabeNationEnum {
|
||||||
|
NATIONAL_OEPS
|
||||||
|
FEI
|
||||||
|
SONSTIGE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum PruefungsaufgabeRichtverfahrenModusEnum {
|
||||||
|
GM
|
||||||
|
GT
|
||||||
|
NICHT_SPEZIFIZIERT
|
||||||
|
}
|
||||||
|
|
||||||
|
enum PruefungsaufgabeViereckEnum {
|
||||||
|
VIERECK_20x40
|
||||||
|
VIERECK_20x60
|
||||||
|
ANDERE
|
||||||
|
UNBEKANNT
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ArtDesStechensEnum {
|
||||||
|
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 FunktionaerRolleEnum {
|
||||||
|
RICHTER
|
||||||
|
PARCOURS_BAUER
|
||||||
|
PARCOURSBAU_ASSISTENT
|
||||||
|
STEWARD
|
||||||
|
TURNIERLEITER
|
||||||
|
TURNIERBEAUFTRAGTER
|
||||||
|
TIERARZT
|
||||||
|
HUFSCHMIED
|
||||||
|
SPRECHER
|
||||||
|
REITERSPRECHER
|
||||||
|
SONSTIGE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum RichterPositionEnum {
|
||||||
|
C
|
||||||
|
E
|
||||||
|
H
|
||||||
|
B
|
||||||
|
M
|
||||||
|
VORSITZ
|
||||||
|
SONSTIGE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum DatenQuelleEnum {
|
||||||
|
OEPS_ZNS
|
||||||
|
MANUELL_NATIONAL
|
||||||
|
MANUELL_INTERNATIONAL
|
||||||
|
SYSTEM_GENERIERTR
|
||||||
|
}
|
||||||
|
|
||||||
|
enum NennungStatusEnum {
|
||||||
|
GEMELDET
|
||||||
|
MANUELL_ERFASST
|
||||||
|
BESTAETIGT
|
||||||
|
NACHGENANNT
|
||||||
|
BEZAHLT
|
||||||
|
STARTBERECHTIGT
|
||||||
|
ABGEMELDET_REITER
|
||||||
|
ABGEMELDET_VERANSTALTER
|
||||||
|
STORNIERT_SYSTEM
|
||||||
|
}
|
||||||
|
|
||||||
|
enum BeginnzeitTypEnum {
|
||||||
|
FIX_UM
|
||||||
|
ANSCHLIESSEND
|
||||||
|
CA_UM
|
||||||
|
NACH_VORHERIGEM_BEWERB_ABTEILUNG
|
||||||
|
}
|
||||||
|
|
||||||
|
enum EventStatusEnum {
|
||||||
|
IN_PLANUNG
|
||||||
|
GENEHMIGT_VERANSTALTER
|
||||||
|
OEFFENTLICH_SICHTBAR
|
||||||
|
AKTIV
|
||||||
|
ABGESCHLOSSEN
|
||||||
|
ABGESAGT
|
||||||
|
}
|
||||||
|
|
||||||
|
enum PlatzTypEnum {
|
||||||
|
AUSTRAGUNG
|
||||||
|
VORBEREITUNG
|
||||||
|
LONGIEREN
|
||||||
|
SONSTIGES
|
||||||
|
} ' Hinzugefügt für die Platz-Entität
|
||||||
|
|
||||||
|
|
||||||
|
' --- Entitäten für verwaltbare Auswahllisten (Lookup Tables / Master Data) ---
|
||||||
|
entity "Pruefungsaufgabe" {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
kuerzel: String
|
||||||
|
nameLang: String
|
||||||
|
sparte: SparteEnum
|
||||||
|
nation: PruefungsaufgabeNationEnum
|
||||||
|
richtverfahrenModusDefault: PruefungsaufgabeRichtverfahrenModusEnum?
|
||||||
|
viereckGroesseDefault: PruefungsaufgabeViereckEnum?
|
||||||
|
istAktiv: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "Richtverfahren" {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
code: String
|
||||||
|
bezeichnung: String
|
||||||
|
sparte: SparteEnum
|
||||||
|
oetoParagraphVerweis: String?
|
||||||
|
istAktiv: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "BewerbsKlasseDefinition" as BewerbsKlasseDef {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
kuerzel: String
|
||||||
|
bezeichnung: String
|
||||||
|
sparte: SparteEnum
|
||||||
|
istAktiv: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "BewerbsKategorieOetoDefinition" as BewerbsKatOetoDef {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
kuerzel: String
|
||||||
|
bezeichnung: String
|
||||||
|
sparte: SparteEnum
|
||||||
|
istAktiv: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
' --- Kern-Entitäten ---
|
||||||
|
entity "Event" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
bezeichnung: String
|
bezeichnung: String
|
||||||
datumVon: LocalDate
|
datumVon: LocalDate
|
||||||
datumBis: LocalDate
|
datumBis: LocalDate
|
||||||
ortName: String
|
veranstalterVereinId: UUID (FK)?
|
||||||
veranstalterVereinId: UUID (FK)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Turnier" as Turnier {
|
entity "Turnier" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
eventId: UUID (FK)
|
eventId: UUID (FK)
|
||||||
oepsTurnierNr: String
|
oepsTurnierNr: String
|
||||||
titel: String
|
titel: String
|
||||||
sparte: SparteEnum
|
sparte: SparteEnum
|
||||||
oetoKategorien: List<String>
|
oetoKategorieIds: List<UUID> ' FKs zu BewerbsKatOetoDef
|
||||||
nennschluss: LocalDateTime
|
regelwerkTyp: RegelwerkTypEnum
|
||||||
|
datumVon: LocalDate
|
||||||
|
datumBis: LocalDate
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Bewerb" as Bewerb {
|
entity "BewerbBasis" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
turnierId: UUID (FK)
|
turnierId: UUID (FK)
|
||||||
nummer: String
|
nummerInAusschreibung: String
|
||||||
bezeichnung: String
|
uebergeordneteBezeichnung: String
|
||||||
klasseText: String
|
sparte: SparteEnum
|
||||||
richtverfahren: String
|
klasseId: UUID (FK zu BewerbsKlasseDef.id)?
|
||||||
startgeld: BigDecimal
|
oetoKategorieId: UUID (FK zu BewerbsKatOetoDef.id)
|
||||||
|
dressurDetailsId: UUID (FK, optional)
|
||||||
|
springDetailsId: UUID (FK, optional)
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Abteilung" as Abteilung {
|
entity "DressurBewerbDetails" {
|
||||||
|
+ bewerbBasisId: UUID (PK, FK)
|
||||||
|
--
|
||||||
|
pruefungsaufgabeId: UUID (FK)
|
||||||
|
richtverfahrenId: UUID (FK)
|
||||||
|
viereckGroesse: PruefungsaufgabeViereckEnum
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "SpringBewerbDetails" {
|
||||||
|
+ bewerbBasisId: UUID (PK, FK)
|
||||||
|
--
|
||||||
|
richtverfahrenId: UUID (FK)
|
||||||
|
artDesStechens: ArtDesStechensEnum?
|
||||||
|
parcoursskizzeUrl: String?
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "Abteilung" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
bewerbId: UUID (FK)
|
bewerbBasisId: UUID (FK)
|
||||||
abteilungsKennzeichen: String
|
abteilungsKennzeichen: String
|
||||||
bezeichnung: String
|
bezeichnungOeffentlich: String?
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Person" as Person {
|
entity "Person" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
oepsSatzNr: String
|
|
||||||
nachname: String
|
nachname: String
|
||||||
vorname: String
|
vorname: String
|
||||||
stammVereinId: UUID (FK)
|
oepsSatzNr: String?
|
||||||
datenQuelle: PersonDatenQuelleEnum
|
datenQuelle: DatenQuelleEnum
|
||||||
|
stammVereinId: UUID (FK)?
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Pferd" as Pferd {
|
entity "Pferd" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
oepsKopfNr: String
|
|
||||||
name: String
|
name: String
|
||||||
geburtsjahr: Int
|
oepsKopfNr: String?
|
||||||
besitzerPersonId: UUID (FK)
|
datenQuelle: DatenQuelleEnum
|
||||||
datenQuelle: PferdDatenQuelleEnum
|
besitzerPersonId: UUID (FK)?
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Verein" as Verein {
|
entity "Verein" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
oepsVereinsNr: String
|
oepsVereinsNr: String
|
||||||
name: String
|
name: String
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Lizenz" as Lizenz {
|
entity "Lizenz" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
personId: UUID (FK)
|
personId: UUID (FK)
|
||||||
lizenzTypOepsCode: String
|
lizenzTypOepsCode: String
|
||||||
gueltigBisJahr: Int
|
bezeichnung: String
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Nennung" as Nennung {
|
entity "Nennung" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
turnierId: UUID (FK)
|
turnierId: UUID (FK)
|
||||||
bewerbId: UUID (FK)
|
abteilungId: UUID (FK)
|
||||||
abteilungId: UUID (FK) ?
|
|
||||||
personId: UUID (FK)
|
personId: UUID (FK)
|
||||||
pferdId: UUID (FK)
|
pferdId: UUID (FK)
|
||||||
status: NennungsStatusEnum
|
status: NennungStatusEnum
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Startfolge" as Startfolge {
|
entity "Startfolge" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
nennungId: UUID (FK)
|
nennungId: UUID (FK)
|
||||||
|
abteilungId: UUID (FK)
|
||||||
startNummer: Int
|
startNummer: Int
|
||||||
startZeitGeplant: LocalDateTime
|
startZeitGeplant: LocalDateTime?
|
||||||
|
pferdepassKontrolliert: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
entity "Ergebnis" as Ergebnis {
|
entity "Ergebnis" {
|
||||||
+ id: UUID (PK)
|
+ id: UUID (PK)
|
||||||
--
|
--
|
||||||
startfolgeId: UUID (FK)
|
startfolgeId: UUID (FK)
|
||||||
platzierung: Int
|
platzierung: Int?
|
||||||
wertnote: Double
|
|
||||||
fehler: Double
|
|
||||||
zeitSekunden: Double
|
|
||||||
}
|
}
|
||||||
|
|
||||||
' Beziehungen
|
entity "Platz" {
|
||||||
Event "1" -- "0..*" Turnier : beinhaltet
|
+ id: UUID (PK)
|
||||||
Turnier "1" -- "0..*" Bewerb : hat
|
--
|
||||||
Bewerb "1" -- "0..*" Abteilung : wird geteilt in
|
name: String
|
||||||
Turnier "1" -- "0..*" Nennung : hat
|
typ: PlatzTypEnum
|
||||||
Bewerb "1" -- "0..*" Nennung : ist Ziel von
|
}
|
||||||
Abteilung "1" -- "0..*" Nennung : ist Ziel von (optional)
|
|
||||||
Person "1" -- "0..*" Nennung : nennt als Reiter
|
|
||||||
Pferd "1" -- "0..*" Nennung : wird genannt mit
|
|
||||||
Nennung "1" -- "0..1" Startfolge : führt zu
|
|
||||||
Startfolge "1" -- "0..1" Ergebnis : erzielt
|
|
||||||
Person "1" -- "0..*" Lizenz : besitzt
|
|
||||||
Verein "1" -- "0..*" Person : hat als Mitglied (Stammverein)
|
|
||||||
Verein "1" -- "0..*" Event : veranstaltet
|
|
||||||
Person "1" -- "0..*" Pferd : besitzt (als Besitzer)
|
|
||||||
Person "1" -- "0..*" Pferd : ist verantwortlich für (als Verantwortlicher)
|
|
||||||
|
|
||||||
|
entity "PlatzZuordnungTurnier" as PlatzZuordnung {
|
||||||
|
turnierId: UUID (FK)
|
||||||
|
platzId: UUID (FK)
|
||||||
|
(PK: turnierId, platzId)
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "Artikel" {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
bezeichnung: String
|
||||||
|
standardPreis: BigDecimal?
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "TurnierArtikel" {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
turnierId: UUID (FK)
|
||||||
|
artikelId: UUID (FK)
|
||||||
|
preis: BigDecimal
|
||||||
|
}
|
||||||
|
|
||||||
|
entity "FunktionaerEinsatz" {
|
||||||
|
+ id: UUID (PK)
|
||||||
|
--
|
||||||
|
personId: UUID (FK)
|
||||||
|
eventId: UUID (FK)
|
||||||
|
turnierId: UUID (FK)?
|
||||||
|
abteilungId: UUID (FK)?
|
||||||
|
rolle: FunktionaerRolleEnum
|
||||||
|
positionRichter: RichterPositionEnum?
|
||||||
|
geplanterStart: LocalDateTime
|
||||||
|
geplantesEnde: LocalDateTime
|
||||||
|
}
|
||||||
|
|
||||||
|
' --- Beziehungen ---
|
||||||
|
Event "1" -- "0..*" Turnier
|
||||||
|
Turnier "1" -- "0..*" BewerbBasis
|
||||||
|
BewerbBasis "1" -- "0..1" DressurDetails
|
||||||
|
BewerbBasis "1" -- "0..1" SpringDetails
|
||||||
|
BewerbBasis "1" -- "1..*" Abteilung
|
||||||
|
|
||||||
|
Turnier "1" -- "0..*" Nennung
|
||||||
|
Abteilung "1" -- "0..*" Nennung
|
||||||
|
Person "1" -- "0..*" Nennung
|
||||||
|
Pferd "1" -- "0..*" Nennung
|
||||||
|
Nennung "1" -- "0..1" Startfolge
|
||||||
|
Startfolge "1" -- "0..1" Ergebnis
|
||||||
|
|
||||||
|
Person "1" -- "0..*" Lizenz
|
||||||
|
Verein "1" -- "0..*" Person : Stammverein
|
||||||
|
Person "1" -- "0..*" Pferd : Besitzer
|
||||||
|
|
||||||
|
Turnier "1" -- "0..*" TurnierArtikel
|
||||||
|
Artikel "1" -- "0..*" TurnierArtikel
|
||||||
|
|
||||||
|
Turnier "1" -- "0..*" PlatzZuordnung
|
||||||
|
Platz "1" -- "0..*" PlatzZuordnung
|
||||||
|
|
||||||
|
Event "1" -- "0..*" FunktionaerEinsatz
|
||||||
|
Person "1" -- "0..*" FunktionaerEinsatz
|
||||||
|
Turnier -- FunktionaerEinsatz
|
||||||
|
Abteilung -- FunktionaerEinsatz
|
||||||
|
|
||||||
|
DressurDetails "1" -- "1" Pruefungsaufgabe
|
||||||
|
DressurDetails "1" -- "1" Richtverfahren
|
||||||
|
SpringDetails "1" -- "1" Richtverfahren
|
||||||
|
|
||||||
|
BewerbBasis "1" -- "1" BewerbsKlasseDef
|
||||||
|
BewerbBasis "1" -- "1" BewerbsKatOetoDef
|
||||||
|
|
||||||
|
Turnier "1" -- "0..*" BewerbsKatOetoDef : "verwendet ÖTO Kategorien"
|
||||||
|
|
||||||
' TODO: Weitere Entitäten und Beziehungen hinzufügen (Platz, Artikel, FunktionaerZuordnung etc.)
|
|
||||||
' TODO: Attribute detaillierter ausarbeiten
|
|
||||||
@enduml
|
@enduml
|
||||||
|
|
|
||||||
BIN
docs/diagrams/ER-Modell_14-5_14-00-0.png
Normal file
BIN
docs/diagrams/ER-Modell_14-5_14-00-0.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 344 KiB |
Loading…
Reference in New Issue
Block a user