2
login VARCHAR UNIQUE NOT NULL,
2
3
loginid SERIAL PRIMARY KEY NOT NULL,
3
login VARCHAR UNIQUE NOT NULL,
5
state VARCHAR NOT NULL CHECK (state in ('no_agreement', 'pending',
6
'enabled', 'disabled')),
7
rolenm VARCHAR NOT NULL CHECK (rolenm in ('anyone', 'student',
10
unixid INT UNIQUE NOT NULL, -- unix user id
11
nick VARCHAR NOT NULL,
17
fullname VARCHAR NOT NULL,
18
studentid VARCHAR, -- may be null
22
CREATE TABLE subject (
23
subjectid SERIAL PRIMARY KEY NOT NULL,
24
subj_code VARCHAR UNIQUE NOT NULL,
25
subj_name VARCHAR NOT NULL,
26
subj_short_name VARCHAR, -- may be null
6
studentid VARCHAR -- may be null
30
9
CREATE TABLE offering (
31
10
offeringid SERIAL PRIMARY KEY NOT NULL,
32
subject INT4 REFERENCES subject (subjectid) NOT NULL,
11
subj_name VARCHAR NOT NULL,
12
subj_code VARCHAR NOT NULL,
33
13
year CHAR(4) NOT NULL,
34
semester CHAR(1) NOT NULL
14
semester CHAR(1) NOT NULL,
37
18
CREATE TABLE project (
80
61
PRIMARY KEY (loginid,offeringid)
64
CREATE TABLE ivle_role (
65
loginid INT4 PRIMARY KEY REFERENCES login (loginid),
83
69
CREATE TABLE assessed (
84
70
assessedid SERIAL PRIMARY KEY NOT NULL,
85
71
loginid INT4 REFERENCES login (loginid),
92
78
CREATE TABLE project_extension (
93
assessedid INT4 REFERENCES assessed (assessedid) NOT NULL,
79
assessedid INT4 REFERENCES assessed (assesedid) NOT NULL,
94
80
projectid INT4 REFERENCES project (projectid) NOT NULL,
95
81
deadline TIMESTAMP NOT NULL,
96
82
approver INT4 REFERENCES login (loginid) NOT NULL,
100
CREATE TABLE project_submission (
101
assessedid INT4 REFERENCES assessed (assessedid) NOT NULL,
102
projectid INT4 REFERENCES project (projectid) NOT NULL,
103
path VARCHAR NOT NULL,
104
revision INT4 NOT NULL
107
86
CREATE TABLE project_mark (
108
assessedid INT4 REFERENCES assessed (assessedid) NOT NULL,
87
assessedid INT4 REFERENCES assessed (assesedid) NOT NULL,
109
88
projectid INT4 REFERENCES project (projectid) NOT NULL,
111
90
marker INT4 REFERENCES login (loginid) NOT NULL,
118
97
CREATE TABLE problem (
119
98
problemid SERIAL PRIMARY KEY NOT NULL,
120
identifier VARCHAR UNIQUE NOT NULL,
124
CREATE TABLE worksheet (
125
worksheetid SERIAL PRIMARY KEY NOT NULL,
126
subject VARCHAR NOT NULL,
127
identifier VARCHAR NOT NULL,
130
UNIQUE (subject, identifier)
133
CREATE TABLE worksheet_problem (
134
worksheetid INT4 REFERENCES worksheet (worksheetid) NOT NULL,
135
problemid INT4 REFERENCES problem (problemid) NOT NULL,
137
PRIMARY KEY (worksheetid, problemid)
140
102
CREATE TABLE problem_tag (
141
problemid INT4 REFERENCES problem (problemid),
103
problemid INT4 REFERENCES tutorial_problem (problemid),
142
104
tag VARCHAR NOT NULL,
144
standard BOOLEAN NOT NULL,
145
105
added_by INT4 REFERENCES login (loginid) NOT NULL,
146
106
date TIMESTAMP NOT NULL,
147
107
PRIMARY KEY (problemid,added_by,tag)
159
119
testcaseid INT4 REFERENCES problem_test_case (testcaseid) NOT NULL,
160
120
tag VARCHAR NOT NULL,
161
121
description VARCHAR,
162
standard BOOLEAN NOT NULL,
163
122
added_by INT4 REFERENCES login (loginid) NOT NULL,
164
123
date TIMESTAMP NOT NULL,
165
124
PRIMARY KEY (testcaseid,added_by,tag)
174
133
PRIMARY KEY (problemid,loginid,date)
177
CREATE TABLE problem_save (
178
problemid INT4 REFERENCES problem (problemid) NOT NULL,
179
loginid INT4 REFERENCES login (loginid) NOT NULL,
180
date TIMESTAMP NOT NULL,
181
text VARCHAR NOT NULL,
182
PRIMARY KEY (problemid,loginid)
185
136
CREATE INDEX problem_attempt_index ON problem_attempt (problemid, loginid);
187
138
CREATE TABLE problem_attempt_breakdown (