56 lines
1.6 KiB
SQL
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');
|