Files
RoggioApp/Brainstorm/260426/05_Events_und_Relationen.md
T
2026-04-26 19:42:42 +02:00

2.5 KiB
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.