-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEIS_Database_File_1.sql
More file actions
160 lines (145 loc) · 4.75 KB
/
EIS_Database_File_1.sql
File metadata and controls
160 lines (145 loc) · 4.75 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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
DROP DATABASE IF EXISTS `EIS`;
CREATE DATABASE `EIS`;
USE `EIS`;
CREATE TABLE Accounts
(
Account_ID INT NOT NULL AUTO_INCREMENT,
Email VARCHAR(100) NOT NULL,
Password VARCHAR(20) NOT NULL,
Account_type VARCHAR(10) NOT NULL,
PRIMARY KEY (Account_ID),
UNIQUE (Email)
);
CREATE TABLE Lecturers
(
Lecturer_ID INT NOT NULL AUTO_INCREMENT,
First_name VARCHAR(50) NOT NULL,
Last_name VARCHAR(50) NOT NULL,
Account_ID INT NOT NULL,
PRIMARY KEY (Lecturer_ID),
FOREIGN KEY (Account_ID) REFERENCES Accounts(Account_ID)
);
CREATE TABLE Departments
(
Department_ID INT NOT NULL AUTO_INCREMENT,
Department_name VARCHAR(200) NOT NULL,
Head_of_department INT NOT NULL,
PRIMARY KEY (Department_ID),
FOREIGN KEY (Head_of_department) REFERENCES Lecturers(Lecturer_ID)
);
CREATE TABLE Programs
(
Program_ID INT NOT NULL AUTO_INCREMENT,
Program_name VARCHAR(100) NOT NULL,
Tuition_fee INT NOT NULL,
Department_ID INT NOT NULL,
PRIMARY KEY (Program_ID),
FOREIGN KEY (Department_ID) REFERENCES Departments(Department_ID),
UNIQUE (Program_name)
);
CREATE TABLE Department_Lecturers
(
Department_ID INT NOT NULL,
Lecturer_ID INT NOT NULL,
PRIMARY KEY (Department_ID, Lecturer_ID),
FOREIGN KEY (Department_ID) REFERENCES Departments(Department_ID),
FOREIGN KEY (Lecturer_ID) REFERENCES Lecturers(Lecturer_ID)
);
CREATE TABLE Students
(
Student_ID INT NOT NULL AUTO_INCREMENT,
First_name VARCHAR(50) NOT NULL,
Last_name VARCHAR(50) NOT NULL,
Personal_ID VARCHAR(10) NOT NULL,
Birthday DATE NOT NULL,
Registration_date DATE NOT NULL,
Scholarship INT,
Payment_status VARCHAR(5) NOT NULL,
Department_ID INT NOT NULL,
Program_ID INT NOT NULL,
Account_ID INT NOT NULL,
Advisor INT NOT NULL,
PRIMARY KEY (Student_ID),
FOREIGN KEY (Department_ID) REFERENCES Departments(Department_ID),
FOREIGN KEY (Program_ID) REFERENCES Programs(Program_ID),
FOREIGN KEY (Account_ID) REFERENCES Accounts(Account_ID) ON DELETE CASCADE,
FOREIGN KEY (Advisor) REFERENCES Lecturers(Lecturer_ID),
UNIQUE (Personal_ID)
);
CREATE TABLE Courses
(
Academic_year INT NOT NULL,
Course_Code VARCHAR(7) NOT NULL,
Course_name VARCHAR(100) NOT NULL,
Course_credit INT NOT NULL,
Program_ID INT NOT NULL,
PRIMARY KEY (Course_Code, Academic_year),
FOREIGN KEY (Program_ID) REFERENCES Programs(Program_ID)
);
CREATE TABLE Participants
(
Academic_year INT NOT NULL,
Course_Code VARCHAR(7) NOT NULL,
Student_ID INT NOT NULL,
Attendance_percent INT NOT NULL,
Retake_status CHAR(1) NOT NULL,
PRIMARY KEY (Course_Code, Academic_year, Student_ID),
FOREIGN KEY (Course_Code, Academic_year) REFERENCES Courses(Course_Code, Academic_year),
FOREIGN KEY (Student_ID) REFERENCES Students(Student_ID) ON DELETE CASCADE
);
CREATE TABLE Course_Lecturers
(
Academic_year INT NOT NULL,
Course_Code VARCHAR(7) NOT NULL,
Lecturer_ID INT NOT NULL,
PRIMARY KEY (Course_Code, Academic_year, Lecturer_ID),
FOREIGN KEY (Course_Code, Academic_year) REFERENCES Courses(Course_Code, Academic_year),
FOREIGN KEY (Lecturer_ID) REFERENCES Lecturers(Lecturer_ID)
);
CREATE TABLE Assignments
(
Academic_year INT NOT NULL,
Course_Code VARCHAR(7) NOT NULL,
Assignment_type VARCHAR(20) NOT NULL,
Assignment_percent INT NOT NULL,
PRIMARY KEY (Assignment_type, Course_Code, Academic_year),
FOREIGN KEY (Course_Code, Academic_year) REFERENCES Courses(Course_Code, Academic_year)
);
CREATE TABLE Student_Assignments
(
Academic_year INT NOT NULL,
Course_Code VARCHAR(7) NOT NULL,
Assignment_type VARCHAR(20) NOT NULL,
Student_ID INT NOT NULL,
Grade INT NOT NULL,
PRIMARY KEY (Assignment_type, Course_Code, Academic_year,Student_ID),
FOREIGN KEY (Course_Code, Academic_year) REFERENCES Courses(Course_Code, Academic_year),
FOREIGN KEY (Student_ID) REFERENCES Students(Student_ID) ON DELETE CASCADE
);
CREATE TABLE Books
(
ISBN NUMERIC(13,0) NOT NULL,
Title VARCHAR(100) NOT NULL,
Author VARCHAR(100) NOT NULL,
Quantity INT NOT NULL,
PRIMARY KEY (ISBN)
);
CREATE TABLE Reserves
(
Student_ID INT NOT NULL,
ISBN NUMERIC(13,0) NOT NULL,
PRIMARY KEY (ISBN, Student_ID),
FOREIGN KEY (ISBN) REFERENCES Books(ISBN),
FOREIGN KEY (Student_ID) REFERENCES Students(Student_ID) ON DELETE CASCADE
);
CREATE TABLE Messages (
Message_ID INT NOT NULL AUTO_INCREMENT,
Sent_date DATE NOT NULL,
Content VARCHAR(2000) NOT NULL,
Status VARCHAR(10) NOT NULL DEFAULT 'Sent',
Sender_ID INT NOT NULL,
Receiver_ID INT NOT NULL,
PRIMARY KEY (Message_ID),
FOREIGN KEY (Sender_ID) REFERENCES Accounts(Account_ID) ON DELETE CASCADE,
FOREIGN KEY (Receiver_ID) REFERENCES Accounts(Account_ID) ON DELETE CASCADE
);