-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEducation DDL.sql
More file actions
145 lines (129 loc) · 3.84 KB
/
Education DDL.sql
File metadata and controls
145 lines (129 loc) · 3.84 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
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
-------------------------------
create schema Education;
GO
create table Education.Building(
buildingID INT IDENTITY PRIMARY KEY,
name varchar(50) unique
);
GO
create table Education.Department(
departmentID INT IDENTITY PRIMARY KEY,
name varchar(50) unique,
buildingID INT not null,
FOREIGN KEY (buildingID) REFERENCES Education.Building(buildingID)
)
GO
create table Education.Major(
majorID INT IDENTITY PRIMARY KEY,
name varchar(50) unique,
departmentID INT not null,
FOREIGN KEY (departmentID) REFERENCES Education.Department(departmentID)
);
GO
CREATE TABLE Education.TimeSlot (
timeSlotID INT IDENTITY PRIMARY KEY,
startTime TIME NOT NULL,
endTime TIME NOT NULL,
daysOfWeek VARCHAR(20) NOT NULL
);
GO
create table Education.Course(
courseID INT IDENTITY PRIMARY KEY,
courseMajorID INT,
title varchar(50),
credit INT,
FOREIGN KEY (courseMajorID) REFERENCES Education.Major(majorID)
);
GO
create table Education.Classroom(
classroomID INT IDENTITY PRIMARY KEY,
buildingID INT,
roomNumber INT,
capacity INT not null,
unique (buildingID, roomNumber),
FOREIGN KEY (buildingID) REFERENCES Education.Building(buildingID)
);
GO
create table Education.Person(
ID INT IDENTITY PRIMARY KEY,
firstName varchar(50) not null,
lastName varchar(50) not null,
nationalCode varchar(20) not null unique,
entryDate DATETIME DEFAULT GETDATE(),
majorID INT not null,
LibraryAccountID INT,
isActive BIT default 1,
role varchar(20) check(role IN ('student', 'instructor', 'librarian')),
FOREIGN KEY (majorID) REFERENCES Education.Major(majorID)
);
GO
create table Education.Instructor(
instructorID INT PRIMARY KEY,
specialist varchar(100),
FOREIGN KEY (instructorID) REFERENCES Education.Person(ID),
);
GO
create table Education.Student(
studentID INT PRIMARY KEY,
advisorID INT,
FOREIGN KEY (studentID) REFERENCES Education.Person(ID),
FOREIGN KEY (advisorID) REFERENCES Education.Instructor(instructorID)
);
GO
create table Education.Section(
secID INT IDENTITY,
courseID INT,
semester INT,
year INT,
classroomID INT not null,
instructorID INT not null,
timeSlotID INT,
PRIMARY KEY (secID, courseID, semester, year),
FOREIGN KEY (instructorID) REFERENCES Education.Instructor(instructorID),
FOREIGN KEY (classroomID) REFERENCES Education.Classroom(classroomID),
FOREIGN KEY (courseID) REFERENCES Education.Course(courseID),
FOREIGN KEY (timeSlotID) REFERENCES Education.TimeSlot(timeSlotID)
);
GO
create table Education.Takes(
studentID INT,
courseID INT,
sectionID INT not null,
grade DECIMAL(5,2) check ((grade>=0 and grade<=20) or grade is null),
status varchar(10) check(status in ('ongoing', 'passed', 'rejected')),
PRIMARY KEY (studentID, courseID, sectionID),
FOREIGN KEY (studentID) REFERENCES Education.Student(studentID),
FOREIGN KEY (courseID) REFERENCES Education.Course(courseID),
);
GO
create table Education.MajorChart(
chartID INT PRIMARY KEY,
majorID INT unique not null,
FOREIGN KEY (majorID) REFERENCES Education.Major(majorID),
);
GO
create table Education.SuggestTerm(
chartID INT,
courseID INT,
PRIMARY KEY (chartID, courseID),
term INT not null,
FOREIGN KEY (courseID) REFERENCES Education.Course(courseID),
FOREIGN KEY (chartID) REFERENCES Education.MajorChart(chartID),
);
GO
create table Education.Prereq(
courseID INT,
prereqID INT,
PRIMARY KEY (courseID,prereqID),
FOREIGN KEY (courseID) REFeRENCES Education.Course(courseID),
FOREIGN KEY (prereqID) REFeRENCES Education.Course(courseID)
);
GO
create table Education.Log (
logId INT IDENTITY PRIMARY KEY,
userType VARCHAR(20), -- student, instructor, system
userId INT,
action VARCHAR(255),
logTime DATETIME DEFAULT GETDATE()
);
GO