35 lines
2.5 KiB
Markdown
Executable File
35 lines
2.5 KiB
Markdown
Executable File
# RoggioApp - Events, Aufgaben & Relationen
|
|
|
|
## 1. Die Universalität der Entitäten
|
|
Nicht nur die physische Welt (Räume, Zirkuswagen), sondern **alles** ist eine grundlegende Entität, die über Eigenschaften (Traits) und Verknüpfungen definiert wird.
|
|
* **Personen als Entitäten:** Können Rollen in Gruppen übernehmen.
|
|
* **Dynamische Relationen (Verknüpfungen mit Eigenschaften):** Eine Person ist nicht einfach "in" einer Gruppe. Die Verbindung selbst hat eine Eigenschaft!
|
|
* *Person A* ist über die Eigenschaft `is_comm_contact` mit *Gruppe X* verbunden.
|
|
* *Person B* ist über die Eigenschaft `is_finance_contact` mit *Gruppe X* verbunden.
|
|
|
|
## 2. Buchungen und Aufgaben = "Events"
|
|
Die höchste Form der Abstraktion betrifft die Zeit und die Aktionen. Es gibt keine starren Tabellen für "Buchungen" und "Putzpläne". Beide sind im Kern **Events**.
|
|
|
|
### Was ist ein Event?
|
|
Ein Event ist ein Knotenpunkt in der Zeit, der andere Entitäten miteinander verbindet und einen Zustand hat.
|
|
|
|
* **Beispiel A: Die Buchung (Event-Typ: Rental)**
|
|
* *Eigenschaften des Events:* Zeitraum (14.08 - 21.08), Status (Bestätigt).
|
|
* *Relation 1:* Verknüpft mit Entität "Gruppe Familie Rossi" (Wer?).
|
|
* *Relation 2:* Verknüpft mit Entität "Haus A" + "Zirkuswagen" (Wo?).
|
|
* *Relation 3:* Finanzen/Rechnung (Geld).
|
|
|
|
* **Beispiel B: Das Putzen (Event-Typ: Task/Maintenance)**
|
|
* *Eigenschaften des Events:* Fälligkeitsfenster (21.08 10:00 - 15:00), Status (Offen).
|
|
* *Relation 1:* Verknüpft mit Entität "Haus A" (Was muss geputzt werden?).
|
|
* *Relation 2:* Verknüpft mit Entität "Kollektiv-Mitglied Sarah" (Wer putzt?).
|
|
* *Spezial-Relation (Event -> Event):* Getriggert durch / Abhängig von "Event A (Buchung Ende)".
|
|
|
|
## Claras architektonische Ableitung
|
|
Das gesamte System besteht eigentlich nur aus drei riesigen Säulen:
|
|
1. **Nodes (Entitäten):** Die Bausteine der Welt (Personen, Einheiten, etc.).
|
|
2. **Edges (Relationen/Traits):** Wie die Nodes verbunden sind und was sie können.
|
|
3. **Events (Zeitliche Knoten):** Das Klebeband, das Nodes auf einer Zeitachse zusammenführt (Buchungen, Aufgaben, Wartung).
|
|
|
|
*Herausforderung für die Datenbank:* So etwas baut man idealerweise mit einer Graphendatenbank (wie Neo4j) oder in PostgreSQL mit JSONB-Feldern für die Traits und extrem klugen Pivot-Tabellen (Edge-Tables) für die Beziehungen, damit man nicht den Verstand beim Queries-Schreiben verliert. Wir müssen einen Weg finden, das in Prisma sauber und typsicher zu modellieren, ohne die Performance zu töten.
|