diff --git a/createdb.sql b/createdb.sql
index e3a6f9e8ece27c41a469bf69df97e4ffbb14b253..deb3ec8e2c78f65824d2882a8b105ad3912c6616 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 ; 
+