DROP TABLE IF EXISTS articles_tags; DROP TABLE IF EXISTS articles_contributors; DROP TABLE IF EXISTS articles_authors; 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) ); CREATE TABLE issues ( id INT AUTO_INCREMENT, published BOOL NOT NULL, PRIMARY KEY (id) ); 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, edited_id INT, clicks INT NOT NULL, is_in_issue BOOL NOT NULL, auto_generated BOOL NOT NULL, PRIMARY KEY (id), FOREIGN KEY (creator_id) REFERENCES users (id), FOREIGN KEY (issue_id) REFERENCES issues (id) ); CREATE TABLE tags ( id INT AUTO_INCREMENT, name VARCHAR(50) NOT NULL UNIQUE, PRIMARY KEY (id) ); CREATE TABLE articles_authors ( article_id INT, author_id INT, PRIMARY KEY (article_id, author_id), FOREIGN KEY (article_id) REFERENCES articles (id), FOREIGN KEY (author_id) REFERENCES users (id) ); CREATE TABLE articles_contributors ( article_id INT, contributor_id INT, PRIMARY KEY (article_id, contributor_id), FOREIGN KEY (article_id) REFERENCES articles (id), FOREIGN KEY (contributor_id) REFERENCES users (id) ); CREATE TABLE articles_tags ( article_id INT, tag_id INT, PRIMARY KEY (article_id, tag_id), FOREIGN KEY (article_id) REFERENCES articles (id), FOREIGN KEY (tag_id) REFERENCES tags (id) );