Since the database stabilized quite well over the last months/years, hopefully it will not change that much in the future.
Thus, here is the current (October '24) model and the reasoning behind it:
- **User**
![](./user.svg)
- All user-relevant fields are stored in `User`.
-`Role` (and its associative table `UserRole`) map current roles the user has. This is used for e.g. permissions (`Vorstand`, `Admin`, `cox`, ... roles) and fee calculation (`Donau Linz`, `scheckbuch`, `Rennjugend`).
-`Family` specifies, well, a family. Currently only used for fee calculation.
1.**Trips:** Trips can be created by every cox. They are "simple", every-day trips.
2.**Events:** Events can be created by everyone who has the `manage_events` role. They are used if multiple coxes are needed, e.g. for "Fetzenfahrt", "Anrudern", .... Additionally, events are shown in public calendar (e.g. on the website).
`TripDetails` extracts the common data for both Trips and Events.