-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_tables.sql
More file actions
83 lines (76 loc) · 3.38 KB
/
create_tables.sql
File metadata and controls
83 lines (76 loc) · 3.38 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
74
75
76
77
78
79
80
81
82
83
CREATE TABLE `courses` (
`dept_code` char(4) NOT NULL,
`faculty_code` enum('BC','C','E','F','G','V','W','X') NOT NULL,
`level` enum('0','1','2','3','4','6','8','9') NOT NULL,
`number` char(3) NOT NULL,
`title` varchar(32) NOT NULL,
`description` varchar(128) NOT NULL,
`course_id` varchar(12) GENERATED ALWAYS AS (concat(`dept_code`,`faculty_code`,`level`,`number`)) STORED,
`full_number` char(4) GENERATED ALWAYS AS (concat(`level`,`number`)) VIRTUAL,
PRIMARY KEY (`dept_code`,`faculty_code`,`level`,`number`),
UNIQUE KEY `course_id` (`course_id`),
FULLTEXT KEY `keywords` (`title`,`description`),
CONSTRAINT `course2_dept_fk` FOREIGN KEY (`dept_code`) REFERENCES `department` (`code`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `course_prereqs` (
`course_id` varchar(12) NOT NULL,
`prereq_id` varchar(12) NOT NULL,
PRIMARY KEY (`course_id`,`prereq_id`),
KEY `prereq_prereq_fk` (`prereq_id`),
CONSTRAINT `prereq_course_fk` FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `prereq_prereq_fk` FOREIGN KEY (`prereq_id`) REFERENCES `courses` (`course_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `sections` (
`call_no` char(5) NOT NULL,
`course_id` varchar(12) NOT NULL,
`section_no` varchar(45) NOT NULL,
`year` int(11) NOT NULL,
`semester` varchar(45) NOT NULL,
`section_key` varchar(45) GENERATED ALWAYS AS (concat(`year`,`semester`,`course_id`,`section_no`)) STORED,
`day` enum('M','T','W','R','F','S','U') DEFAULT NULL,
`start_time` int(4) DEFAULT NULL,
`end_time` int(4) DEFAULT NULL,
`max` int(4) DEFAULT NULL,
PRIMARY KEY (`call_no`),
UNIQUE KEY `unique` (`course_id`,`section_no`,`year`,`semester`),
CONSTRAINT `section_course_fk` FOREIGN KEY (`course_id`) REFERENCES `courses` (`course_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `department` (
`code` char(4) NOT NULL,
`name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`code`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `Person` (
`UNI` varchar(12) NOT NULL,
`last_name` varchar(32) NOT NULL,
`first_name` varchar(32) NOT NULL,
`type` enum('S','F') NOT NULL,
PRIMARY KEY (`UNI`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `Faculty` (
`UNI` varchar(12) NOT NULL,
`pay_grade` int(1) NOT NULL,
`title` varchar(32) NOT NULL,
`department` varchar(50) NOT NULL,
PRIMARY KEY (`UNI`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `Student` (
`UNI` varchar(12) NOT NULL,
`school` varchar(32) NOT NULL,
`year` int(5) NOT NULL,
`email` varchar(50) DEFAULT NULL,
PRIMARY KEY (`UNI`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `course_participant` (
`UNI` varchar(12) NOT NULL,
`role` enum('S','F') NOT NULL,
`section_call_no` char(5) NOT NULL,
`course_id` varchar(12) DEFAULT NULL,
`taught_or_taken` tinyint(1) NOT NULL,
PRIMARY KEY (`UNI`,`section_call_no`),
KEY `cp_section_fk` (`section_call_no`),
CONSTRAINT `cp_participant_fk` FOREIGN KEY (`UNI`) REFERENCES `Person` (`UNI`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `cp_section_fk` FOREIGN KEY (`section_call_no`) REFERENCES `sections` (`call_no`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8