-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtables.sql
331 lines (294 loc) · 8.91 KB
/
tables.sql
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
DROP TABLE IF EXISTS meeting CASCADE;
DROP TABLE IF EXISTS course CASCADE;
DROP TABLE IF EXISTS department CASCADE;
DROP TABLE IF EXISTS faculty CASCADE;
DROP TABLE IF EXISTS class CASCADE;
DROP TABLE IF EXISTS student CASCADE;
DROP TABLE IF EXISTS probation CASCADE;
DROP TABLE IF EXISTS course_prereq CASCADE;
DROP TABLE IF EXISTS course_oldnum CASCADE;
DROP TABLE IF EXISTS faculty_class CASCADE;
DROP TABLE IF EXISTS faculty_department CASCADE;
DROP TABLE IF EXISTS student_attendance CASCADE;
DROP TABLE IF EXISTS student_probation CASCADE;
DROP TABLE IF EXISTS student_prev_degree CASCADE;
DROP TABLE IF EXISTS undergrad_major CASCADE;
DROP TABLE IF EXISTS undergrad_minor CASCADE;
DROP TABLE IF EXISTS undergraduate CASCADE;
DROP TABLE IF EXISTS degree CASCADE;
DROP TABLE IF EXISTS degree_MS CASCADE;
DROP TABLE IF EXISTS degree_BS CASCADE;
DROP TABLE IF EXISTS degree_MS_concentration CASCADE;
DROP TABLE IF EXISTS degree_unit_categories CASCADE;
DROP TABLE IF EXISTS graduate CASCADE;
DROP TABLE IF EXISTS graduate_MS CASCADE;
DROP TABLE IF EXISTS graduate_PHD CASCADE;
DROP TABLE IF EXISTS thesis_committee CASCADE;
DROP TABLE IF EXISTS graduate_thesis CASCADE;
DROP TABLE IF EXISTS thesis_committee_faculty CASCADE;
DROP TABLE IF EXISTS class_course CASCADE;
DROP TABLE IF EXISTS course_old_num CASCADE;
DROP TABLE IF EXISTS current_classes CASCADE;
DROP TABLE IF EXISTS degree_ms_concentration CASCADE;
DROP TABLE IF EXISTS five_year_student CASCADE;
DROP TABLE IF EXISTS prev_classes CASCADE;
CREATE TABLE student
(
student_id serial PRIMARY KEY,
first_name varchar(256),
middle_name varchar(256),
last_name varchar(256),
residency varchar(256),
enrolled boolean
);
CREATE TABLE class
(
course_title varchar(256),
section_id char(4),
qtr_year varchar(20),
class_size int,
waitlist_size int,
PRIMARY KEY (course_title, section_id, qtr_year)
);
CREATE TABLE course
(
course_num varchar(256),
grade_option varchar(256),
consent boolean,
lab_work boolean,
min_units int,
max_units int,
PRIMARY KEY (course_num)
);
CREATE TABLE course_prereq
(
course_num varchar(256),
required_course_num varchar(256),
FOREIGN KEY(course_num) REFERENCES course(course_num) ON DELETE CASCADE,
FOREIGN KEY(required_course_num) REFERENCES course(course_num) ON DELETE CASCADE,
PRIMARY KEY(course_num, required_course_num)
);
CREATE TABLE course_old_num
(
course_num varchar(256),
old_course_num varchar(256),
FOREIGN KEY(course_num) REFERENCES course(course_num) ON DELETE CASCADE,
PRIMARY KEY(course_num, old_course_num)
);
CREATE TABLE department
(
dept_name varchar(10),
PRIMARY KEY(dept_name)
);
CREATE TABLE faculty
(
name varchar(256),
title varchar(256),
PRIMARY KEY(name)
);
CREATE TABLE faculty_class
(
name varchar(256),
course_title varchar(256),
section_id char(4),
qtr_year varchar(20),
FOREIGN KEY(name) references faculty(name) ON DELETE CASCADE,
FOREIGN KEY(course_title,section_id,qtr_year) references class(course_title,section_id,qtr_year) ON DELETE CASCADE,
PRIMARY KEY (name,course_title,section_id,qtr_year)
);
CREATE TABLE faculty_department
(
name varchar(256),
dept_name varchar(256),
FOREIGN KEY(name) references faculty(name) ON DELETE CASCADE,
FOREIGN KEY(dept_name) references department(dept_name) ON DELETE CASCADE,
PRIMARY KEY(name,dept_name)
);
CREATE TABLE student_attendance
(
student_id int,
start_qtr varchar(10),
start_year int,
end_qtr varchar(10),
end_year int,
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id, start_qtr, start_year)
);
CREATE TABLE probation
(
probation_id serial,
start_qtr varchar(10),
start_year int,
end_qtr varchar(10),
end_year int,
reason varchar(256),
PRIMARY KEY(probation_id)
);
CREATE TABLE student_probation
(
student_id int,
probation_id int,
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
FOREIGN KEY(probation_id) references probation(probation_id) ON DELETE CASCADE,
PRIMARY KEY (student_id, probation_id)
);
CREATE TABLE student_prev_degree
(
student_id int,
degree varchar(256),
year int,
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id,degree,year)
);
CREATE TABLE degree
(
degree_id serial,
name varchar(256),
PRIMARY KEY(degree_id)
);
CREATE TABLE degree_unit_categories
(
degree_id int,
category varchar(20),
grade varchar(2),
units int,
FOREIGN KEY(degree_id) references degree(degree_id) ON DELETE CASCADE,
PRIMARY KEY(degree_id,category)
);
CREATE TABLE degree_BS
(
degree_id int,
FOREIGN KEY(degree_id) references degree(degree_id) ON DELETE CASCADE,
PRIMARY KEY(degree_id)
);
CREATE TABLE degree_MS
(
degree_id int,
FOREIGN KEY(degree_id) references degree(degree_id) ON DELETE CASCADE,
PRIMARY KEY(degree_id)
);
CREATE TABLE degree_MS_concentration
(
degree_id int,
course_num varchar(256),
FOREIGN KEY(degree_id) references degree_MS(degree_id) ON DELETE CASCADE,
FOREIGN KEY(course_num) references course(course_num) ON DELETE CASCADE,
PRIMARY KEY(degree_id,course_num)
);
CREATE TABLE meeting(
course_title varchar(256),
section_id char(4),
qtr_year varchar(20),
start_meeting_time timestamp,
end_meeting_time timestamp,
location varchar(256),
mandatory boolean,
meeting_type varchar(10),
FOREIGN KEY(course_title,section_id,qtr_year) references class(course_title,section_id,qtr_year) ON DELETE CASCADE,
PRIMARY KEY(course_title,section_id,qtr_year,start_meeting_time)
);
CREATE TABLE undergraduate
(
student_id int,
five_year_BSMS boolean,
college varchar(10),
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id)
);
CREATE TABLE undergrad_major
(
student_id int,
major varchar(256),
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id,major)
);
CREATE TABLE undergrad_minor
(
student_id int,
minor varchar(256),
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id,minor)
);
CREATE TABLE graduate
(
student_id int,
dept_name varchar(10),
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id)
);
CREATE TABLE graduate_MS
(
student_id int,
FOREIGN KEY(student_id) references graduate(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id)
);
CREATE TABLE graduate_PHD
(
student_id int,
candidacy boolean,
advisor varchar(256),
FOREIGN KEY(student_id) references graduate(student_id) ON DELETE CASCADE,
FOREIGN KEY(advisor) references faculty(name) ON DELETE CASCADE,
PRIMARY KEY(student_id)
);
CREATE TABLE five_year_student
(
student_id int,
undergraduate boolean,
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
PRIMARY KEY(student_id)
);
CREATE TABLE thesis_committee
(
thesis_name varchar(256),
PRIMARY KEY(thesis_name)
);
CREATE TABLE graduate_thesis
(
student_id int,
thesis_name varchar(256),
FOREIGN KEY(student_id) references graduate(student_id) ON DELETE CASCADE,
FOREIGN KEY(thesis_name) references thesis_committee(thesis_name) ON DELETE CASCADE,
PRIMARY KEY(student_id)
);
CREATE TABLE thesis_committee_faculty
(
thesis_name varchar(256),
faculty_name varchar(256),
FOREIGN KEY(thesis_name) references thesis_committee(thesis_name) ON DELETE CASCADE,
FOREIGN KEY(faculty_name) references faculty(name) ON DELETE CASCADE,
PRIMARY KEY(thesis_name,faculty_name)
);
CREATE TABLE current_classes
(
student_id int,
course_title varchar(256),
section_id char(4),
qtr_year varchar(20),
units int,
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
FOREIGN KEY(course_title,section_id,qtr_year) references class(course_title,section_id,qtr_year) ON DELETE CASCADE,
PRIMARY KEY(student_id,course_title,section_id,qtr_year)
);
CREATE TABLE prev_classes
(
student_id int,
course_title varchar(256),
section_id char(4),
qtr_year varchar(20),
units int,
grade varchar(5),
FOREIGN KEY(student_id) references student(student_id) ON DELETE CASCADE,
FOREIGN KEY(course_title,section_id,qtr_year) references class(course_title,section_id,qtr_year) ON DELETE CASCADE,
PRIMARY KEY(student_id,course_title,section_id,qtr_year)
);
CREATE TABLE class_course
(
course_num varchar(256),
course_title varchar(256),
section_id char(4),
qtr_year varchar(20),
FOREIGN KEY(course_num) references course(course_num) ON DELETE CASCADE,
FOREIGN KEY(course_title,section_id,qtr_year) references class(course_title,section_id,qtr_year) ON DELETE CASCADE,
PRIMARY KEY(course_num,course_title,section_id,qtr_year)
);