-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathddl.sql
More file actions
308 lines (262 loc) · 5.44 KB
/
ddl.sql
File metadata and controls
308 lines (262 loc) · 5.44 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
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
/* =============================== */
/* Database used: SQLite */
/* =============================== */
/* Definitions for USER, FACULTY, ADMIN */
CREATE TABLE User
(
ID INTEGER (2) PRIMARY KEY,
FName VARCHAR (30),
LName VARCHAR (30),
Street VARCHAR (30),
City VARCHAR (30),
PCode VARCHAR (30),
Country VARCHAR (30),
Email VARCHAR (50),
Password VARCHAR(25),
ProfilePicture LONGBLOB
);
CREATE TABLE Faculty
(
FID INT PRIMARY KEY,
Title VARCHAR (30),
Affiliation VARCHAR (30),
Website VARCHAR (30),
CONSTRAINT fk1 FOREIGN KEY (FID)
REFERENCES User(ID)
);
CREATE TABLE Admin
(
AID INT PRIMARY KEY,
GrantorID INT,
AuthDate DATE,
AuthTime TIME (0),
CONSTRAINT fk1 FOREIGN KEY (AID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (GrantorID)
REFERENCES User(ID)
);
CREATE TABLE Authentication
(
FID INT PRIMARY KEY,
AID INT DEFAULT '',
AuthDate DATE,
AuthTime TIME (0),
CONSTRAINT fk1 FOREIGN KEY (FID)
REFERENCES Faculty(FID),
CONSTRAINT fk2 FOREIGN KEY (AID)
REFERENCES Admin(AID)
);
/* User Relations */
CREATE TABLE ContactInfo(
UID INT,
MobileNo VARCHAR(10),
PRIMARY KEY (UID, MobileNo),
CONSTRAINT fk1 FOREIGN KEY (UID)
REFERENCES User(ID)
);
/* User-to-Course Relations */
CREATE TABLE IsInterest(
SID INT,
CID INT,
PRIMARY KEY (SID, CID),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
CREATE TABLE Enroll(
SID INT,
CID INT,
PRIMARY KEY (SID, CID),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
CREATE TABLE Payment(
SID INT,
CID INT,
code VARCHAR(30),
date DATE,
time TIME (0),
PRIMARY KEY (SID, CID),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
CREATE TABLE Teach(
FID INT,
CID INT,
date DATE,
time TIME (0),
PRIMARY KEY(FID, CID),
CONSTRAINT fk1 FOREIGN KEY (FID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
/* User-to-Others */
CREATE TABLE CompletesMaterial(
SID INT,
time TIME (0),
date DATE,
MID INT,
CCID INT,
PRIMARY KEY(SID, MID, CCID),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (MID, CCID)
REFERENCES Material(ID, CID)
);
CREATE TABLE CompletesCourse(
SID INT,
time TIME (0),
date DATE,
CID INT,
comment LONGBLOB,
rating INT DEFAULT 5,
PRIMARY KEY(SID, CID, comment),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
/* ============================== */
/* Course */
CREATE TABLE Course(
name VARCHAR(30),
icon LONGBLOB,
cost INT DEFAULT 0,
ID INT PRIMARY KEY,
creationDate DATE,
creationTime TIME (0),
description LONGBLOB,
primaryTopic INT,
CONSTRAINT fk1 FOREIGN KEY (primaryTopic)
REFERENCES Topic(ID)
);
CREATE TABLE Topic(
ID INT PRIMARY KEY,
Name VARCHAR(30)
);
CREATE TABLE Sec_Topic(
TID INT,
CID INT,
PRIMARY KEY (TID,CID),
CONSTRAINT fk1 FOREIGN KEY (TID)
REFERENCES Topic(ID),
CONSTRAINT fk2 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
CREATE TABLE Material(
Name VARCHAR(30),
ID INT,
CID INT,
PRIMARY KEY (ID, CID),
CONSTRAINT fk1 FOREIGN KEY (CID)
REFERENCES Course(ID)
);
/* These are subclasses of materials, with the same
primary keys of MID, CID */
CREATE TABLE File(
Path VARCHAR(128),
Size INT DEFAULT 0,
Type VARCHAR(10),
FID INT,
FCID INT,
PRIMARY KEY (FID, FCID),
CONSTRAINT fk1 FOREIGN KEY (FID, FCID)
REFERENCES Material(ID, CID)
);
CREATE TABLE Link(
url VARCHAR(128),
IsVideo BOOLEAN,
LID INT,
LCID INT,
PRIMARY KEY (LID, LCID),
CONSTRAINT fk1 FOREIGN KEY (LID, LCID)
REFERENCES Material(ID, CID)
);
CREATE TABLE Post(
Text LONGBLOB,
PID INT,
PCID INT,
PRIMARY KEY (PID, PCID),
CONSTRAINT fk1 FOREIGN KEY (PID, PCID)
REFERENCES Material(ID, CID)
);
/* ============================== */
/* Question Entity and its Relations */
CREATE TABLE Questions(
QuestionText LONGBLOB,
ID INT PRIMARY KEY,
IsVisible BOOLEAN,
Answer LONGBLOB
);
CREATE TABLE RelateToMaterial(
RMID INT,
QID INT,
RCID INT,
PRIMARY KEY (RMID, QID, RCID),
CONSTRAINT fk1 FOREIGN KEY (RMID, RCID)
REFERENCES Material(ID, CID),
CONSTRAINT fk2 FOREIGN KEY (QID)
REFERENCES Questions(ID)
);
/* Question-to-User Relations */
CREATE TABLE LikesQuestion(
SID INT,
QID INT,
PRIMARY KEY (SID, QID),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (QID)
REFERENCES Questions(ID)
);
CREATE TABLE Ask(
SID INT,
QID INT,
PRIMARY KEY (SID, QID),
CONSTRAINT fk1 FOREIGN KEY (SID)
REFERENCES User(ID),
CONSTRAINT fk2 FOREIGN KEY (QID)
REFERENCES Questions(ID)
);
CREATE TABLE Answers(
QID INT,
AFID INT,
PRIMARY KEY (QID, AFID),
CONSTRAINT fk1 FOREIGN KEY (AFID)
REFERENCES Faculty(FID),
CONSTRAINT fk2 FOREIGN KEY (QID)
REFERENCES Questions(ID)
);
CREATE TABLE Quiz(
MID INT,
QCID INT,
P_Score INT DEFAULT 0,
PRIMARY KEY (MID, QCID),
CONSTRAINT fk1 FOREIGN KEY (MID, QCID)
REFERENCES Material(ID, CID)
);
CREATE TABLE Quiz_Questions(
MID INT,
CID INT,
NUMBER INT,
Text LONGBLOB,
PRIMARY KEY (MID, CID, NUMBER),
CONSTRAINT fk1 FOREIGN KEY (MID, CID)
REFERENCES Quiz(MID, QCID)
);
CREATE TABLE Quiz_Answers(
MID INT,
CID INT,
NUMBER INT,
ID INT,
A_Text LONGBLOB,
Feedback LONGBLOB,
PRIMARY KEY (MID, CID, NUMBER, ID),
CONSTRAINT fk1 FOREIGN KEY (MID, CID, NUMBER)
REFERENCES Quiz_questions(MID, CID, NUMBER)
);