CREATE DATABASE IF NOT EXISTS pbbfa24aal_habittracker CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE pbbfa24aal_habittracker; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(190) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(80) NOT NULL, color VARCHAR(20) NOT NULL DEFAULT '#176b5b' ); CREATE TABLE habits ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, category_id INT NULL, title VARCHAR(120) NOT NULL, description TEXT NULL, target_per_week TINYINT UNSIGNED NOT NULL DEFAULT 3, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL ); CREATE TABLE habit_logs ( id INT AUTO_INCREMENT PRIMARY KEY, habit_id INT NOT NULL, completed_on DATE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY unique_habit_day (habit_id, completed_on), FOREIGN KEY (habit_id) REFERENCES habits(id) ON DELETE CASCADE ); CREATE TABLE reminders ( id INT AUTO_INCREMENT PRIMARY KEY, habit_id INT NOT NULL, reminder_time TIME NOT NULL, weekday TINYINT UNSIGNED NULL, is_active TINYINT(1) NOT NULL DEFAULT 1, FOREIGN KEY (habit_id) REFERENCES habits(id) ON DELETE CASCADE ); INSERT INTO categories (name, color) VALUES ('Gesundheit', '#176b5b'), ('Lernen', '#365c9a'), ('Sport', '#b95c20'), ('Alltag', '#6b4ba3');