From 669d65e7719a5fbcb3e7b596292151d338c29f16 Mon Sep 17 00:00:00 2001 From: Finlay White <whitef6@cardiff.ac.uk> Date: Wed, 5 Apr 2023 15:10:10 +0100 Subject: [PATCH] not null unique + md5 ready --- createdb.sql | 54 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/createdb.sql b/createdb.sql index e3a6f9e..deb3ec8 100644 --- a/createdb.sql +++ b/createdb.sql @@ -3,7 +3,7 @@ CREATE SCHEMA `SuperGeeks`; USE `SuperGeeks`; DROP TABLE IF EXISTS `Parents`; CREATE TABLE `Parents`( -parentID int(20) not null, +parentID varchar(40) not null unique, primary key (parentID), fname varchar(35), lname varchar(35), @@ -15,15 +15,15 @@ subscribed bool, phonenum int); DROP TABLE IF EXISTS `Students`; CREATE TABLE `Students`( -studentID int(20), +studentID varchar(40) not null unique, primary key(studentID), 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 , -parentsID int(20), -groupID int(20), +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 @@ -32,7 +32,7 @@ FOREIGN KEY (parentsID) REFERENCES Parents(parentID) DROP TABLE IF EXISTS `Volunteers`; CREATE TABLE `Volunteers`( - VolunteerID int(20), + VolunteerID varchar(40) not null unique, primary key(VolunteerID), fname varchar(35), lname varchar(35), @@ -43,30 +43,30 @@ CREATE TABLE `Volunteers`( ); DROP TABLE IF EXISTS `Sessions`; CREATE TABLE `Sessions`( - sessionID int(20), + sessionID varchar(40) not null unique, primary key (sessionID), - leaderID int(20), + leaderID varchar(40), location varchar(55), duration int(10), FOREIGN KEY (leaderID) REFERENCES Volunteers(VolunteerID), maxAttendees int(10), - groupid int(20), + groupid varchar(40), Nohelpers int(10)); DROP TABLE IF EXISTS `Badge`; CREATE TABLE `Badge`( - BadgeID int(20), + BadgeID varchar(40) not null unique, primary key(BadgeID), badgeName varchar(35), badgeDesc varchar(255), - RequirementID int(20) + RequirementID varchar(40) ); DROP TABLE IF EXISTS `BadgeAwarded`; CREATE TABLE `BadgeAwarded`( - awardedID int(20), + awardedID int(20) not null unique, primary key(awardedID), - awardedto int(20), - awardedby int(20), - Badgeawarded int(20), + awardedto varchar(40), + awardedby varchar(40), + Badgeawarded varchar(40), dateAwarded date, FOREIGN KEY (awardedto) REFERENCES Students(studentID), FOREIGN KEY (awardedby) REFERENCES Volunteers(VolunteerID), @@ -74,19 +74,33 @@ CREATE TABLE `BadgeAwarded`( ); -- DROP TABLE IF EXISTS `Badgereqs`; CREATE TABLE `Badgereqs`( - RequirementID int(20), + RequirementID varchar(40) not null unique, primary key(RequirementID), - mustbecompleted int(20), - tocomplete int(20), + 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 int(20), - sessionID int(20), + 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); - select * from StudentAttendance; \ No newline at end of file + + + +-- procedures + +DELIMITER ^^ +-- error handling +CREATE PROCEDURE CreateParent(IN accNum INT,IN firstname VARCHAR(25),IN accBalance float) +BEGIN +DECLARE CONTINUE HANDLER FOR 1062 +    SELECT 'Duplicate account number' AS MESSAGE; +   INSERT INTO accounts (accNo, fname, balance) VALUES (accNum, firstname, accBalance); +END^^ +DELIMITER ; + -- GitLab