-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbdmparseDB.sql
291 lines (261 loc) · 5.91 KB
/
bdmparseDB.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
create table Colleges(
cid INT NOT NULL AUTO_INCREMENT,
collegeName VARCHAR(50) NOT NULL,
PRIMARY KEY ( cid )
);
create table TermCodes(
tid INT NOT NULL AUTO_INCREMENT,
termCode VARCHAR(10) NOT NULL,
collegeID INT NOT NULL,
PRIMARY KEY ( tid ),
FOREIGN KEY ( collegeID ) REFERENCES Colleges(cid)
ON DELETE CASCADE
);
create table DocumentTypes(
did INT NOT NULL AUTO_INCREMENT,
documentType VARCHAR(100) NOT NULL,
collegeID INT NOT NULL,
PRIMARY KEY ( did ),
FOREIGN KEY ( collegeID ) REFERENCES Colleges(cid)
ON DELETE CASCADE
);
create table Users(
uid INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
privilegeLevel INT NOT NULL,
collegeID INT NOT NULL,
PRIMARY KEY ( uid ),
FOREIGN KEY ( collegeID ) REFERENCES Colleges(cid)
);
/*
* On Valid User: Query returns privilege level
* On Invalid User: Query returns the empty set
*/
delimiter //
create procedure validateUser(
in param_username VARCHAR(50)
)
begin
select U.uid, U.username, C.collegeName, U.privilegeLevel
from Users U, Colleges C
where U.username = param_username and U.collegeID = C.cid;
end //
delimiter ;
/*
* updates the privalege level of a valid user
*/
delimiter //
create procedure changeUserPrivilegeLevel(
in param_username VARCHAR(50),
in param_privalegeLevel INT
)
begin
update Users
set privilegeLevel = param_privalegeLevel
where username = param_username;
end //
delimiter ;
/*
* Allows for inserting a new user into the database
*/
delimiter //
create procedure insertUser(
in param_username VARCHAR(50),
in param_privilegeLevel INT,
in param_collegeName VARCHAR(50)
)
begin
SET @resultCollegeID := (SELECT cid FROM Colleges
WHERE collegeName = param_collegeName);
INSERT INTO Users (username, privilegeLevel, collegeID)
VALUES (param_username, param_privilegeLevel, @resultCollegeID);
SELECT U.uid
FROM Users U
WHERE U.username = param_username;
end //
delimiter ;
/*
* Allows for inserting a college into the database
*/
delimiter //
create procedure insertCollege(
in param_collegeName VARCHAR(50)
)
begin
INSERT INTO Colleges (collegeName)
VALUES(param_collegeName);
end //
delimiter ;
/*
* Allows for inserting a document types into the database
*/
delimiter //
create procedure insertDocumentType(
in param_documentType VARCHAR(100),
in param_collegeName VARCHAR(50)
)
begin
SET @resultCollegeID := (SELECT cid FROM Colleges
WHERE collegeName = param_collegeName);
INSERT INTO DocumentTypes (documentType, collegeID)
VALUES(param_documentType, @resultCollegeID);
SELECT did
FROM DocumentTypes
WHERE documentType = param_documentType and collegeID = @resultCollegeID;
end //
delimiter ;
/*
* Allows for inserting a term code into the database
*/
delimiter //
create procedure insertTermCode(
in param_termCode VARCHAR(10),
in param_collegeName VARCHAR(50)
)
begin
SET @resultCollegeID := (SELECT cid FROM Colleges
WHERE collegeName = param_collegeName);
INSERT INTO TermCodes (termCode, collegeID)
VALUES(param_termCode, @resultCollegeID);
SELECT tid
FROM TermCodes
WHERE termCode = param_termCode and collegeID = @resultCollegeID;
end //
delimiter ;
/*
* Allows for deleting a document type from the database
*/
delimiter //
create procedure deleteTermCode(
in param_tid INT
)
begin
DELETE FROM TermCodes
WHERE tid = param_tid;
end //
delimiter ;
/*
* Allows for deleting a document type from the database
*/
delimiter //
create procedure deleteDocumentType(
in param_did INT
)
begin
DELETE FROM DocumentTypes
WHERE did = param_did;
end //
delimiter ;
/*
* Allows for deleting a user from the database
*/
delimiter //
create procedure deleteUser(
in param_uid INT
)
begin
DELETE FROM Users U
WHERE U.uid = param_uid;
end //
delimiter ;
/*
* Allows for deleting a college from the database
*/
delimiter //
create procedure deleteCollege(
in param_cid INT
)
begin
DELETE FROM TermCodes
WHERE collegeID = param_cid;
DELETE FROM DocumentTypes
WHERE collegeID = param_cid;
DELETE FROM Users
WHERE collegeID = param_cid;
DELETE FROM Colleges
WHERE cid = param_cid;
end //
delimiter ;
/*
* select from users, returns username, uid, and whether they are an admin
*/
delimiter //
create procedure getAllUsers()
begin
SELECT U.uid, U.username, U.privilegeLevel FROM Users U;
end //
delimiter ;
/*
* select from users, returns username, uid, and whether they are an admin
* allows for query by college
*/
delimiter //
create procedure getUsersByCollege(
in param_collegeName VARCHAR(50)
)
begin
SET @resultCollegeID := (SELECT cid FROM Colleges
WHERE collegeName = param_collegeName);
SELECT U.uid, U.username, U.privilegeLevel FROM Users U
INNER JOIN Colleges C
ON (U.collegeID = C.cid)
WHERE U.collegeID = @resultCollegeID;
end //
delimiter ;
/*
* select from users, returns username, uid, and whether they are an admin
*/
delimiter //
create procedure getAllDocumentTypes()
begin
SELECT did, documentType FROM DocumentTypes;
end //
delimiter ;
/*
* select from document types, returns document types, did
* allows for query by college
*/
delimiter //
create procedure getDocumentTypesByCollege(
in param_collegeName VARCHAR(50)
)
begin
SELECT D.did, D.documentType FROM DocumentTypes D
INNER JOIN Colleges C
ON (D.collegeID = C.cid)
WHERE C.collegeName = param_collegeName;
end //
delimiter ;
/*
* select from users, returns username, uid, and whether they are an admin
*/
delimiter //
create procedure getAllTermCodes()
begin
SELECT tid, termCode FROM TermCodes;
end //
delimiter ;
/*
* select from termCodes, returns document types, did
* allows for query by college
*/
delimiter //
create procedure getTermCodesByCollege(
in param_collegeName VARCHAR(50)
)
begin
SELECT T.tid, T.termCode FROM TermCodes T
INNER JOIN Colleges C
ON (T.collegeID = C.cid)
WHERE C.collegeName = param_collegeName;
end //
delimiter ;
/*
* select from users, returns username, uid, and whether they are an admin
*/
delimiter //
create procedure getAllColleges()
begin
SELECT collegeName FROM Colleges;
end //
delimiter ;