-- Grundgerüst: Benutzer und zentrale Einstellungen. -- -- Fachliche Tabellen (Konten, Kategorien, Buchungen …) kommen in Phase 1 und 2 -- als eigene Migrationen dazu. CREATE TABLE IF NOT EXISTS benutzer ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, benutzername VARCHAR(64) NOT NULL, anzeigename VARCHAR(128) NOT NULL DEFAULT '', passwort_hash VARCHAR(255) NOT NULL, aktiv TINYINT(1) NOT NULL DEFAULT 1, letzte_anmeldung DATETIME NULL, erstellt_am DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_benutzername (benutzername) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Alle Programmeinstellungen an einer Stelle; der Einstellungsdialog hängt -- seine Reiter über das Feld "bereich" ein. CREATE TABLE IF NOT EXISTS einstellungen ( schluessel VARCHAR(64) NOT NULL, wert TEXT NULL, bereich VARCHAR(32) NOT NULL DEFAULT 'allgemein', geaendert_am DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (schluessel) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO einstellungen (schluessel, wert, bereich) VALUES ('mandant_name', 'Privat', 'allgemein'), ('waehrung', 'EUR', 'allgemein'), ('erster_monat', '1', 'buchhaltung'), ('darstellung_thema', 'system', 'darstellung'), ('zeilen_pro_seite', '100', 'darstellung'), ('debug_log_aktiv', '0', 'diagnose') ON DUPLICATE KEY UPDATE schluessel = schluessel;