2
2
loginid SERIAL PRIMARY KEY NOT NULL,
3
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',
5
state VARCHAR NOT NULL CHECK (state in ('no_agreement', 'enabled', 'disabled')),
10
6
unixid INT UNIQUE NOT NULL, -- unix user id
11
7
nick VARCHAR NOT NULL,
17
8
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
9
rolenm VARCHAR NOT NULL CHECK (rolenm in ('anyone', 'student', 'tutor', 'lecturer', 'admin')),
10
studentid VARCHAR -- may be null
30
13
CREATE TABLE offering (
31
14
offeringid SERIAL PRIMARY KEY NOT NULL,
32
subject INT4 REFERENCES subject (subjectid) NOT NULL,
15
subj_name VARCHAR NOT NULL,
16
subj_code VARCHAR NOT NULL,
33
17
year CHAR(4) NOT NULL,
34
semester CHAR(1) NOT NULL
18
semester CHAR(1) NOT NULL,
37
22
CREATE TABLE project (
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
85
CREATE TABLE project_mark (
108
86
assessedid INT4 REFERENCES assessed (assessedid) NOT NULL,
109
87
projectid INT4 REFERENCES project (projectid) NOT NULL,
118
96
CREATE TABLE problem (
119
97
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
101
CREATE TABLE problem_tag (
141
102
problemid INT4 REFERENCES problem (problemid),
142
103
tag VARCHAR NOT NULL,
174
135
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
138
CREATE INDEX problem_attempt_index ON problem_attempt (problemid, loginid);
187
140
CREATE TABLE problem_attempt_breakdown (