Files
habit-tracker/database/schema.sql
T

56 lines
1.6 KiB
SQL

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');