Tables in this schema
usersprojectstaskscommentslabelstask_labels
Schema (SQL)
MySQL-dialect DDL. Open it in the editor for a visual ER diagram you can edit, or copy the SQL straight into your project.
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(254) NOT NULL UNIQUE,
full_name VARCHAR(120) NOT NULL,
created_at DATETIME NOT NULL
);
CREATE TABLE projects (
id INT PRIMARY KEY AUTO_INCREMENT,
owner_id INT NOT NULL,
name VARCHAR(200) NOT NULL,
status VARCHAR(20) NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (owner_id) REFERENCES users(id)
);
CREATE TABLE tasks (
id INT PRIMARY KEY AUTO_INCREMENT,
project_id INT NOT NULL,
assignee_id INT,
title VARCHAR(200) NOT NULL,
status VARCHAR(20) NOT NULL,
priority VARCHAR(20) NOT NULL,
due_date DATE,
created_at DATETIME NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects(id),
FOREIGN KEY (assignee_id) REFERENCES users(id)
);
CREATE TABLE comments (
id INT PRIMARY KEY AUTO_INCREMENT,
task_id INT NOT NULL,
author_id INT NOT NULL,
body TEXT NOT NULL,
created_at DATETIME NOT NULL,
FOREIGN KEY (task_id) REFERENCES tasks(id),
FOREIGN KEY (author_id) REFERENCES users(id)
);
CREATE TABLE labels (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
color VARCHAR(7) NOT NULL
);
CREATE TABLE task_labels (
task_id INT NOT NULL,
label_id INT NOT NULL,
PRIMARY KEY (task_id, label_id),
FOREIGN KEY (task_id) REFERENCES tasks(id),
FOREIGN KEY (label_id) REFERENCES labels(id)
);