11
11
subj_name VARCHAR NOT NULL,
12
12
subj_code VARCHAR NOT NULL,
13
13
year CHAR(4) NOT NULL,
14
semester CHAR(1) NOT NULL,
17
18
CREATE TABLE group (
18
groupnm VARCHAR NOT NULL,
19
groupnm VARCHAR NOT NULL,
19
20
groupid SERIAL PRIMARY KEY NOT NULL,
20
21
offeringid INT4 REFERENCES offering (offeringid),
23
createdby INT4 REFERENCES login (loginid) NOT NULL,
24
epoch TIMESTAMP NOT NULL,
22
25
UNIQUE (offeringid, groupnm)
25
28
CREATE TABLE group_invitation (
26
loginid INT4 REFERENCES user (loginid),
27
groupid INT4 REFERENCES group (groupid),
29
loginid INT4 REFERENCES login (loginid) NOT NULL,
30
groupid INT4 REFERENCES group (groupid) NOT NULL,
31
inviter INT4 REFERENCES login (loginid) NOT NULL,
32
invited TIMESTAMP NOT NULL,
28
34
UNIQUE (loginid,groupid)
31
37
CREATE TABLE group_member (
32
loginid INT4 REFERENCES user (loginid),
38
loginid INT4 REFERENCES login (loginid),
33
39
groupid INT4 REFERENCES group (groupid),
34
40
projectid INT4 REFERENCES project (projectid),
35
41
UNIQUE (loginid,projectid),
39
45
CREATE TABLE enrolment (
40
loginid INT4 REFERENCES user (loginid),
46
loginid INT4 REFERENCES login (loginid),
41
47
offeringid INT4 REFERENCES offering (offeringid),
49
special_result VARCHAR,
51
special_supp_result VARCHAR,
45
53
PRIMARY KEY (loginid,offeringid)
48
56
CREATE TABLE ivle_role (
49
loginid INT4 PRIMARY KEY REFERENCES user (loginid),
57
loginid INT4 PRIMARY KEY REFERENCES login (loginid),
69
CREATE TABLE assessed (
70
assessedid SERIAL PRIMARY KEY NOT NULL,
71
loginid INT4 REFERENCES login (loginid),
72
groupid INT4 REFERENCES group (groupid),
73
-- exactly one of loginid and groupid must be non-null
74
CHECK ((loginid IS NOT NULL AND groupid IS NULL)
75
OR (loginid IS NULL AND groupid IS NOT NULL))
61
78
CREATE TABLE project_extension (
62
loginid INT4 REFERENCES user (loginid),
63
groupid INT4 REFERENCES group (groupid),
79
assesedid INT4 REFERENCES assessed (assesedid) NOT NULL,
64
80
projectid INT4 REFERENCES project (projectid) NOT NULL,
65
81
deadline TIMESTAMP NOT NULL,
66
approver INT4 REFERENCES user (loginid) NOT NULL,
68
-- exactly one of loginid and groupid must be non-null
69
CHECK ((loginid IS NOT NULL AND groupid IS NULL)
70
OR (loginid IS NULL AND groupid IS NOT NULL))
82
approver INT4 REFERENCES login (loginid) NOT NULL,
73
86
CREATE TABLE project_mark (
74
loginid INT4 REFERENCES user (loginid),
75
groupid INT4 REFERENCES group (groupid),
87
assesedid INT4 REFERENCES assessed (assesedid) NOT NULL,
76
88
projectid INT4 REFERENCES project (projectid) NOT NULL,
78
marker INT4 REFERENCES user (loginid) NOT NULL,
90
marker INT4 REFERENCES login (loginid) NOT NULL,
83
-- exactly one of loginid and groupid must be non-null
84
CHECK ((loginid IS NOT NULL AND groupid IS NULL)
85
OR (loginid IS NULL AND groupid IS NOT NULL))
88
97
CREATE TABLE problem (
93
102
CREATE TABLE problem_tag (
94
103
problemid INT4 REFERENCES tutorial_problem (problemid),
95
104
tag VARCHAR NOT NULL,
96
added_by INT4 REFERENCES user (loginid) NOT NULL,
105
added_by INT4 REFERENCES login (loginid) NOT NULL,
97
106
date TIMESTAMP NOT NULL,
98
107
PRIMARY KEY (problemid,added_by,tag)
110
119
testcaseid INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
111
120
tag VARCHAR NOT NULL,
112
121
description VARCHAR,
113
added_by INT4 REFERENCES user (loginid) NOT NULL,
122
added_by INT4 REFERENCES login (loginid) NOT NULL,
114
123
date TIMESTAMP NOT NULL,
115
124
PRIMARY KEY (testcaseid,added_by,tag)
118
127
CREATE TABLE problem_attempt (
119
128
problemid INT4 REFERENCES problem (problemid) NOT NULL,
120
loginid INT4 REFERENCES user (loginid) NOT NULL,
129
loginid INT4 REFERENCES login (loginid) NOT NULL,
121
130
date TIMESTAMP NOT NULL,
122
131
attempt VARCHAR NOT NULL,
123
132
complete BOOLEAN NOT NULL,
129
138
CREATE TABLE problem_attempt_breakdown (
130
139
problemid INT4 REFERENCES problem (problemid) NOT NULL,
131
140
testcaseid INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
132
loginid INT4 REFERENCES user (loginid) NOT NULL,
141
loginid INT4 REFERENCES login (loginid) NOT NULL,
133
142
date TIMESTAMP NOT NULL,