Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SUPERGEEKS-SQL
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Finlay White
SUPERGEEKS-SQL
Compare revisions
main to beffe7d347895bcc7fc0cc2882ff43017ebaa024
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
c22063583/supergeeks-sql
Select target project
No results found
beffe7d347895bcc7fc0cc2882ff43017ebaa024
Select Git revision
Branches
main
1 result
Swap
Target
c22063583/supergeeks_yo
Select target project
c22063583/supergeeks_yo
c22063583/supergeeks-sql
2 results
main
Select Git revision
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source (6)
badges added
· 1068e723
Finlay White
authored
2 years ago
1068e723
base table done
· 5b5b8977
Finlay White
authored
2 years ago
5b5b8977
not null unique + md5 ready
· 669d65e7
Finlay White
authored
2 years ago
669d65e7
added proc
· 92160e75
Finlay White
authored
2 years ago
92160e75
volunteeradded added
· 9384dc51
Finlay White
authored
2 years ago
9384dc51
badges added
· beffe7d3
Finlay White
authored
2 years ago
beffe7d3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
createdb.sql
+202
-0
202 additions, 0 deletions
createdb.sql
with
202 additions
and
0 deletions
createdb.sql
0 → 100644
View file @
beffe7d3
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;``
This diff is collapsed.
Click to expand it.