Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • c22063583/supergeeks-sql
  • c22063583/supergeeks_yo
2 results
Show changes
Commits on Source (6)
DROP SCHEMA IF EXISTS `SuperGeeks`;
CREATE SCHEMA `SuperGeeks`;
USE `SuperGeeks`;
DROP TABLE IF EXISTS `Parents`;
CREATE TABLE `Parents`(
parentID varchar(40) not null unique,
primary key (parentID),
fname varchar(35),
lname varchar(35),
email varchar(320) unique,
-- maximum size of an email address should be able to store absolutely all possible email addresses
-- unable to view payment info from any select functions it is also encrypted for customer safety
paymentinfo varchar(50),
subscribed bool,
phonenum int(10));
DROP TABLE IF EXISTS `Students`;
CREATE TABLE `Students`(
studentID varchar(40) not null unique,
studentCode int key auto_increment,
fname varchar(35),
lname varchar(35),
-- The UK Government Data Standards Catalogue reccomends 35 characters for each the first name and last name
bday date,
dayjoined date DEFAULT CURDATE() ,
parentsID varchar(40),
groupID varchar(40),
FOREIGN KEY (parentsID) REFERENCES Parents(parentID)
-- parent ID is stored in student rather than the parents table so that one parent can have many children
-- and not one child can have many parents. A child may have multiple parents irl but they would share an
-- account
);
ALTER TABLE Students auto_increment = 30001;
DROP TABLE IF EXISTS `Volunteers`;
CREATE TABLE `Volunteers`(
VolunteerID varchar(40) not null unique,
VolunteerCode int auto_increment,
primary key (volunteerCode,VolunteerID),
fname varchar(35),
lname varchar(35),
hoursworked int(8) DEFAULT 0,
DBSlastchecked date,
SGlastchecked date,
emergencycontact varchar(20),
email varchar(320)
);
alter table Volunteers auto_increment = 1001;
DROP TABLE IF EXISTS `Sessions`;
CREATE TABLE `Sessions`(
sessionID varchar(40) not null unique,
primary key (sessionID),
leaderID varchar(40),
location varchar(55),
duration int(10),
FOREIGN KEY (leaderID) REFERENCES Volunteers(VolunteerID),
maxAttendees int(10),
groupid varchar(40),
Nohelpers int(10));
DROP TABLE IF EXISTS `Badge`;
CREATE TABLE `Badge`(
BadgeID varchar(40) not null unique,
primary key(BadgeID),
badgeName varchar(35),
badgeDesc varchar(255)
);
DROP TABLE IF EXISTS `BadgeAwarded`;
CREATE TABLE `BadgeAwarded`(
awardedID int(20) not null unique,
primary key(awardedID),
awardedto varchar(40),
awardedby varchar(40),
Badgeawarded varchar(40),
dateAwarded date,
FOREIGN KEY (awardedto) REFERENCES Students(studentID),
FOREIGN KEY (awardedby) REFERENCES Volunteers(VolunteerID),
FOREIGN KEY (Badgeawarded) REFERENCES Badge(BadgeID)
);
-- DROP TABLE IF EXISTS `Badgereqs`;
CREATE TABLE `Badgereqs`(
mustbecompleted varchar(40),
tocomplete varchar(40),
FOREIGN KEY (mustbecompleted) REFERENCES Badge(BadgeID),
FOREIGN KEY (tocomplete) REFERENCES Badge(BadgeID)
);
DROP TABLE IF EXISTS `StudentAttendance`;
CREATE TABLE `StudentAttendance`(
studentID varchar(40),
sessionID varchar(40),
FOREIGN KEY (studentID) REFERENCES Students(studentID),
FOREIGN KEY (sessionID) REFERENCES Sessions(SessionID)
);
Alter table `Badge`ADD FOREIGN KEY (RequirementID) REFERENCES Badgereqs(RequirementID);
-- procedures
drop procedure if exists addParent;
delimiter $$
CREATE PROCEDURE addParent(
IN fname varchar(35),
IN lname varchar(35),
IN email varchar(320),
IN passwerd varchar(70),
IN phonenum int(10))
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT 'User already exists' as ERROR ;
END;
-- if (locate("@",email) = 0
-- Select "invalid email as Error";
INSERT INTO Parents(parentID,fname,lname,email,phonenum) values
(md5(concat(email,passwerd)),fname,lname,email,phonenum);
END$$addParent
DELIMITER ;
drop procedure if exists addVolunteer;
delimiter $$
CREATE PROCEDURE addVolunteer(
IN fname varchar(35),
IN lname varchar(35),
IN email varchar(320),
IN passwerd varchar(70),
IN phonenum int(10))
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT 'User already exists' as ERROR ;
END;
INSERT INTO Volunteers(VolunteerID,fname,lname,email,emergencycontact) values
(md5(concat(email,passwerd)),fname,lname,email,phonenum);
END$$
DELIMITER ;
drop procedure if exists addBadgereq;
delimiter $$
CREATE PROCEDURE addBadgereq(
IN youNeed varchar(40),
IN toGet varchar(40))
-- I use this naming scheme as it just makes it easy to understand
-- which badge is which in this relationship
BEGIN
DECLARE EXIT HANDLER FOR 1452
BEGIN
SELECT 'Badge not found' as ERROR ;
END;
INSERT INTO Badgereqs(mustbecompleted,tocomplete) values
(youNeed,toGet) ;
END$$
DELIMITER ;
drop procedure if exists addBadge;
delimiter $$
CREATE PROCEDURE addBadge(
IN badgeName varchar(40),
IN badgeDesc varchar(255))
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT ' Badge already exists' as ERROR ;
END;
INSERT INTO Badge(BadgeID,badgeName,badgeDesc) values
(md5(badgeName),badgeName,badgeDesc);
END$$
DELIMITER ;
drop procedure if exists addStudent;
delimiter $$
CREATE PROCEDURE addStudent(
IN fname varchar(35),
IN lname varchar(35),
IN bday date,
IN parentsID varchar(40),
IN passwerd varchar(70))
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT 'User already exists' as ERROR ;
END;
INSERT INTO Students(StudentID,fname,lname,bday,parentsID) values
(md5(concat(fname,lname,passwerd)),fname,lname,bday,parentsID);
END$$
DELIMITER ;
call addParent("jeff","Jones","email@realemail.com","veryStrongPassw0rd",02358254);
call addStudent("bobby","jones",'2012-2-11','8e301d6e513165a9c0b6b9a2b10c8305',"EXTRASTRONGPASSWORD");
call addBadge("real badge","this is a totally real badge");
call addStudent("timothy","jones",'2002-2-11','8e301d6e513165a9c0b6b9a2b10c8305',"EXTRASTRONGPASSWORD");
select * from badge;
-- select * from parents;``