diff --git a/createdb.sql b/createdb.sql index 35e0b004884fe66cc8b02ea3d9395daa537bee97..cb0bcb7464e2040056f01419a4d33b589668287c 100644 --- a/createdb.sql +++ b/createdb.sql @@ -1,6 +1,6 @@ DROP SCHEMA IF EXISTS `SuperGeeks`; CREATE SCHEMA `SuperGeeks`; -USE `SuperGeeks`; +USE `SuperGeeks`; DROP TABLE IF EXISTS `Parents`; CREATE TABLE `Parents`( parentID varchar(40) not null unique, @@ -16,7 +16,7 @@ phonenum int(10)); DROP TABLE IF EXISTS `Students`; CREATE TABLE `Students`( studentID varchar(40) not null unique, -primary key(studentID), +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 @@ -26,10 +26,10 @@ 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 +-- 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, @@ -60,8 +60,7 @@ CREATE TABLE `Badge`( BadgeID varchar(40) not null unique, primary key(BadgeID), badgeName varchar(35), - badgeDesc varchar(255), - RequirementID varchar(40) + badgeDesc varchar(255) ); DROP TABLE IF EXISTS `BadgeAwarded`; CREATE TABLE `BadgeAwarded`( @@ -77,8 +76,6 @@ CREATE TABLE `BadgeAwarded`( ); -- DROP TABLE IF EXISTS `Badgereqs`; CREATE TABLE `Badgereqs`( - RequirementID varchar(40) not null unique, - primary key(RequirementID), mustbecompleted varchar(40), tocomplete varchar(40), FOREIGN KEY (mustbecompleted) REFERENCES Badge(BadgeID), @@ -99,49 +96,107 @@ Alter table `Badge`ADD FOREIGN KEY (RequirementID) REFERENCES Badgereqs(Requirem drop procedure if exists addParent; delimiter $$ CREATE PROCEDURE addParent( - IN fname varchar(35), + 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 + 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 + + 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 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 + DECLARE EXIT HANDLER FOR 1062 BEGIN SELECT 'User already exists' as ERROR ; END; - INSERT INTO Volunteers(VolunteerID,fname,lname,email,emergencycontact) values + INSERT INTO Volunteers(VolunteerID,fname,lname,email,emergencycontact) values (md5(concat(email,passwerd)),fname,lname,email,phonenum); -END$$addParent +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"); + -call addVolunteer("jeff","Jones","email@realemail.com","veryStrongPassw0rd",02358254); -call addVolunteer("jeff","Jones","sdkufhsdkfh@wshfksjdfh.com","veryStrongPassw0rd",02358254); -call addVolunteer("jeff","Jones","email@realemfvail.com","veryStrongPassw0rd",02358254); -call addVolunteer("jeff","Jones","esmail@realemail.com","veryStrongPassw0rd",02358254); -select * from volunteers; \ No newline at end of file +select * from badge; +-- select * from parents;``