1
Datenbankdiagramm
Benjamin Goisser edited this page 2026-02-04 18:44:28 +01:00
| title |
|---|
| ER-Diagramm/Datenbankdiagramm |
Das System funktioniert wie folgt:
-
Delta-Tabelle (
DOCUMENTDELTA):- Speichert alle inkrementellen Änderungen (Deltas), die an einem Dokument seit der letzten Vollversion vorgenommen wurden.
- Jedes Delta repräsentiert eine kleine Aktualisierung des Dokumentzustands.
-
Versionierung:
- Vollversionen eines Dokuments werden in der Tabelle
DOCUMENTVERSIONgespeichert. - Wenn eine neue Vollversion erstellt wird, werden alle Deltas bis zu diesem Punkt auf das Dokument angewendet, und der resultierende Zustand wird als Vollversion gespeichert.
- Nach der Erstellung einer Vollversion werden die Deltas, die zu dieser Version führten, gelöscht, um Speicherplatz zu sparen und Rollback-Operationen zu vereinfachen.
- Vollversionen eines Dokuments werden in der Tabelle
-
Rollback:
- Ein Rollback ist nur auf Vollversionen möglich, die in der Tabelle
DOCUMENTVERSIONgespeichert sind. - Deltas werden nicht für Rollbacks verwendet, da sie nur temporär existieren, bis die nächste Vollversion erstellt wird.
- Ein Rollback ist nur auf Vollversionen möglich, die in der Tabelle
-
Dokument-Tabelle (
DOCUMENT):- Enthält statische Metadaten über das Dokument, wie den Titel, das Erstellungsdatum und den Besitzer.
- Speichert keine Inhalte oder Versionsinformationen.
erDiagram
USER {
string userToken PK
}
DOCUMENT {
string documentId PK
string title
datetime createdAt
datetime lastModifiedAt
string userToken FK
string parentDocumentId FK
}
DOCUMENTVERSION {
int versionId PK
string documentId FK
blob content
datetime timestamp
}
DOCUMENTDELTA {
int deltaId PK
string documentId FK
blob update
blob stateVector
datetime timestamp
}
LINKSHARE {
string linkId PK
string documentId FK
string permission
datetime expiresAt
}
MEDIAFILE {
int fileId PK
string fileName
string mimeType
blob fileContent
datetime createdAt
bigint fileSize
}
USER ||--o{ DOCUMENT : "owns"
DOCUMENT ||--o{ DOCUMENTVERSION : "has versions"
DOCUMENT ||--o{ DOCUMENTDELTA : "has deltas"
DOCUMENT ||--o{ LINKSHARE : "can be shared by"
DOCUMENT ||--o{ MEDIAFILE : "embeds"
USER ||--o{ LINKSHARE : "creates"
DOCUMENT ||--o{ DOCUMENT : "has parent"