blog-app/schema.sql

70 lines
2.3 KiB
MySQL
Raw Normal View History

2021-09-16 20:27:51 +08:00
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
);