cpolis/create_db.sql

76 lines
2.0 KiB
MySQL
Raw Normal View History

2024-04-02 19:38:16 +02:00
DROP TABLE IF EXISTS articles_tags;
DROP TABLE IF EXISTS articles_contributors;
DROP TABLE IF EXISTS articles_authors;
2024-04-02 19:38:16 +02:00
DROP TABLE IF EXISTS tags;
DROP TABLE IF EXISTS articles;
DROP TABLE IF EXISTS issues;
DROP TABLE IF EXISTS users;
CREATE TABLE users (
id INT AUTO_INCREMENT,
username VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(60) NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
profile_pic_link VARCHAR(255),
role INT NOT NULL,
PRIMARY KEY (id)
2024-04-02 19:38:16 +02:00
);
CREATE TABLE issues (
id INT AUTO_INCREMENT,
published BOOL NOT NULL,
PRIMARY KEY (id)
2024-04-02 19:38:16 +02:00
);
CREATE TABLE articles (
id INT AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
banner_link VARCHAR(255),
summary TEXT NOT NULL,
published BOOL NOT NULL,
rejected BOOL NOT NULL,
creator_id INT NOT NULL,
issue_id INT NOT NULL,
2024-12-27 10:53:06 +01:00
edited_id INT NOT NULL,
2024-12-27 10:52:57 +01:00
clicks INT NOT NULL,
is_in_issue BOOL NOT NULL,
auto_generated BOOL NOT NULL,
uuid VARCHAR(36) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (creator_id) REFERENCES users (id),
FOREIGN KEY (issue_id) REFERENCES issues (id)
2024-04-02 19:38:16 +02:00
);
CREATE TABLE tags (
id INT AUTO_INCREMENT,
name VARCHAR(50) NOT NULL UNIQUE,
PRIMARY KEY (id)
2024-04-02 19:38:16 +02:00
);
CREATE TABLE articles_authors (
2024-12-27 10:53:06 +01:00
article_id INT NOT NULL,
author_id INT NOT NULL,
PRIMARY KEY (article_id, author_id),
FOREIGN KEY (article_id) REFERENCES articles (id),
FOREIGN KEY (author_id) REFERENCES users (id)
);
CREATE TABLE articles_contributors (
2024-12-27 10:53:06 +01:00
article_id INT NOT NULL,
contributor_id INT NOT NULL,
PRIMARY KEY (article_id, contributor_id),
FOREIGN KEY (article_id) REFERENCES articles (id),
FOREIGN KEY (contributor_id) REFERENCES users (id)
);
2024-04-02 19:38:16 +02:00
CREATE TABLE articles_tags (
2024-12-27 10:53:06 +01:00
article_id INT NOT NULL,
tag_id INT NOT NULL,
PRIMARY KEY (article_id, tag_id),
FOREIGN KEY (article_id) REFERENCES articles (id),
FOREIGN KEY (tag_id) REFERENCES tags (id)
2024-04-02 19:38:16 +02:00
);