Zum Inhalt springen

Datenbank

Alle Tabellen leben im traffino-Schema (nicht public).

Jede Business-Tabelle hat:

  • created_at, created_by — Erstellungszeitpunkt und -User
  • updated_at, updated_by — Letzte Aenderung
  • row_version INT — Optimistic Locking
  • row_period TSTZRANGE — Temporal History (System-Time)
  • History-Tabelle: {table}_history mit gleicher Struktur
  • Trigger: auditing() (setzt Timestamps, loggt Deletes) + versioning() (Temporal Tables)
  • audit_deletions Tabelle: Soft-Delete-Log (id, table_name, deleted_at, deleted_by)
TabelleBeschreibung
tenantKunden (Name, Slug, Kontakt)
accountBenutzer, Rollen, tenant_id
sessionAktive Sessions
login_attemptLogin-Versuche, 2FA-Codes
known_deviceBekannte Geraete fuer 2FA-Skip
password_resetReset-Codes (Admin-initiiert)
siteWebsites pro Tenant
pageSeiten pro Site (Slug, Template-Referenz)
templateSeiten-Templates
template_fieldTemplate-Felder (Platzhalter-Definition)
messageKontaktanfragen
analytics_eventRohe Tracking-Events
emailDeduplizierte E-Mail-Adressen (SHA-256 Hash)
email_gdpr_complianceDSGVO-Consent-Tracking (DOI)
email_relationVerknuepft E-Mails mit Entitaeten (polymorph)
email_templateHTML-Templates in der DB (3-Ebenen-Hierarchie)
email_translation_keyUebersetzbare Texte fuer E-Mail-Templates
system_messageE-Mail-Queue (pending → sent/failed)
system_message_relationIdempotenz-Verknuepfung
geolocationMaxMind-Ergebnisse (1:1-Erweiterung)

Naming-Konvention: Alle Tabellen im Singular (account, session, email_template).

Nr.Beschreibung
000001Audit-Infrastruktur (Trigger, History-Pattern)
000002Account, Tenant, Site, Auth-Tabellen, E-Mail-Modell
000003Content-Modell (Template, Page, Storage, Message, Analytics), E-Mail-System Seeds
000004Account-Verwaltung (password_reset Tabelle, account.locale, E-Mail-Templates)
000005Tenant-Owner-Rolle

UUIDv7 — zeitbasiert, sortierbar, bessere Index-Performance als UUIDv4.