· 5 years ago · Feb 06, 2020, 04:38 PM
1CREATE TABLE IF NOT EXISTS users(
2 id INT AUTO_INCREMENT,
3 username VARCHAR(30) NOT NULL UNIQUE,
4 password VARCHAR(30) NOT NULL,
5 email VARCHAR(50) NOT NULL,
6 CONSTRAINT pk_users PRIMARY KEY (id)
7);
8
9CREATE TABLE IF NOT EXISTS repositories (
10 id INT AUTO_INCREMENT,
11 name VARCHAR(50) NOT NULL,
12 CONSTRAINT pk_repositories PRIMARY KEY (id)
13);
14
15CREATE TABLE IF NOT EXISTS repositories_contributors (
16 repository_id INT NOT NULL,
17 contributor_id INT NOT NULL,
18 CONSTRAINT fk_repositories_contributors_repositories FOREIGN KEY (repository_id) REFERENCES repositories (id),
19 CONSTRAINT fk_repositories_contributors_users FOREIGN KEY (contributor_id) REFERENCES users (id)
20);
21
22CREATE TABLE IF NOT EXISTS issues (
23 id INT AUTO_INCREMENT,
24 title VARCHAR(255) NOT NULL,
25 issue_status VARCHAR(6) NOT NULL,
26 repository_id INT NOT NULL,
27 assignee_id INT NOT NULL,
28 CONSTRAINT pk_issues PRIMARY KEY (id),
29 CONSTRAINT fk_issues_repositories FOREIGN KEY (repository_id) REFERENCES repositories (id),
30 CONSTRAINT fk_issues_users FOREIGN KEY (assignee_id) REFERENCES users (id)
31);
32
33CREATE TABLE IF NOT EXISTS commits (
34 id INT AUTO_INCREMENT,
35 message VARCHAR(255) NOT NULL,
36 issue_id INT,
37 repository_id INT NOT NULL,
38 contributor_id INT NOT NULL,
39 CONSTRAINT pk_commits PRIMARY KEY (id),
40 CONSTRAINT fk_commits_issues FOREIGN KEY (issue_id) REFERENCES issues (id),
41 CONSTRAINT fk_commits_repositories FOREIGN KEY (repository_id) REFERENCES repositories (id),
42 CONSTRAINT fk_commits_users FOREIGN KEY (contributor_id) REFERENCES users (id)
43);
44
45CREATE TABLE IF NOT EXISTS files (
46 id INT AUTO_INCREMENT,
47 name VARCHAR(100) NOT NULL,
48 size DECIMAL(10, 2) NOT NULL,
49 parent_id INT,
50 commit_id INT NOT NULL,
51 CONSTRAINT pk_files PRIMARY KEY (id),
52 CONSTRAINT fk_files_files FOREIGN KEY (parent_id) REFERENCES files (id),
53 CONSTRAINT fk_files_commits FOREIGN KEY (commit_id) REFERENCES commits (id)
54);