-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspeedrunDatabaseSchema.sql
More file actions
73 lines (65 loc) · 2.01 KB
/
speedrunDatabaseSchema.sql
File metadata and controls
73 lines (65 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
CREATE TABLE Users (
UserID SERIAL PRIMARY KEY,
Email VARCHAR(255) NOT NULL,
Phone VARCHAR(20),
FName VARCHAR(50) NOT NULL,
LName VARCHAR(50) NOT NULL
);
CREATE TABLE Credentials (
Username VARCHAR(50) PRIMARY KEY,
Password VARCHAR(50) NOT NULL,
UserType TEXT NOT NULL,
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE
);
--TopTanking should be an int that relates a RunID
CREATE TABLE Runners (
RunnerID SERIAL PRIMARY KEY,
NumRuns INTEGER NOT NULL,
TopRanking INTEGER,
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE
);
CREATE TABLE Moderators (
ModID SERIAL PRIMARY KEY,
VerifiedRuns INTEGER NOT NULL,
RemovedRuns INTEGER NOT NULL,
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE
);
CREATE TABLE Administrators (
AdminID SERIAL PRIMARY KEY,
NumUsersBanned INTEGER NOT NULL,
NumPostsRemoved INTEGER NOT NULL,
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE
);
CREATE TABLE BannedUsers (
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE,
AdminID INTEGER REFERENCES Administrators(AdminID) ON DELETE CASCADE,
BanExplanation TEXT,
BanDuration INTERVAL
);
CREATE TABLE Games (
GameID SERIAL PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Genre VARCHAR(50)
);
CREATE TABLE Runs (
RunID SERIAL PRIMARY KEY,
Time INTERVAL NOT NULL,
UserSubmitted VARCHAR(50) NOT NULL,
Category VARCHAR(50) NOT NULL,
Verified BOOLEAN NOT NULL,
Ranking INTEGER,
GameID INTEGER REFERENCES Games(GameID) ON DELETE CASCADE,
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE
);
CREATE TABLE Comments (
CommentID SERIAL PRIMARY KEY,
RunID INTEGER REFERENCES Runs(RunID) ON DELETE CASCADE,
UserID INTEGER REFERENCES Users(UserID) ON DELETE CASCADE,
Comment TEXT
);
--RunID refers to the top run of that game
CREATE TABLE GameRuns (
GameID INTEGER REFERENCES Games(GameID) ON DELETE CASCADE,
RunID INTEGER REFERENCES Runs(RunID) ON DELETE CASCADE,
TotalRuns INTEGER NOT NULL
);