70 lines
2.3 KiB
SQL
70 lines
2.3 KiB
SQL
DROP SCHEMA IF EXISTS `blog-app`;
|
|
CREATE SCHEMA `blog-app`;
|
|
USE `blog-app`;
|
|
|
|
CREATE TABLE users (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(32) NOT NULL UNIQUE,
|
|
email VARCHAR(254) NOT NULL UNIQUE,
|
|
password BINARY(60) NOT NULL UNIQUE
|
|
);
|
|
|
|
CREATE TABLE active_tokens (
|
|
id INT UNSIGNED PRIMARY KEY,
|
|
token CHAR(40) NOT NULL,
|
|
FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE
|
|
ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE forget_tokens (
|
|
id INT UNSIGNED PRIMARY KEY,
|
|
token CHAR(40) NOT NULL,
|
|
FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE
|
|
ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE verify_tokens (
|
|
id INT UNSIGNED PRIMARY KEY,
|
|
token CHAR(40) NOT NULL,
|
|
FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE
|
|
ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE posts (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
title VARCHAR(255) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
author VARCHAR(32) NOT NULL,
|
|
create_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (author) REFERENCES users(name) ON DELETE CASCADE
|
|
ON UPDATE CASCADE
|
|
);
|
|
|
|
CREATE TABLE comments (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
content TEXT NOT NULL,
|
|
author VARCHAR(32) NOT NULL,
|
|
create_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
ON UPDATE CURRENT_TIMESTAMP,
|
|
comment_to INT UNSIGNED NOT NULL,
|
|
FOREIGN KEY (author) REFERENCES users(name) ON DELETE CASCADE
|
|
ON UPDATE CASCADE,
|
|
FOREIGN KEY (comment_to) REFERENCES posts(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE tags (
|
|
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
|
keyword VARCHAR(32) NOT NULL UNIQUE
|
|
);
|
|
|
|
CREATE TABLE post_tag (
|
|
post_id INT UNSIGNED NOT NULL,
|
|
tag_id INT UNSIGNED NOT NULL,
|
|
PRIMARY KEY (post_id, tag_id),
|
|
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
|
|
);
|