48
Stephen Taylor Anthony Ung

Analysis of the Gareth Walsh Rovers Database

Embed Size (px)

DESCRIPTION

Analysis of the Gareth Walsh Rovers Database. Stephen Taylor Anthony Ung. Database Purpose and Contents. - PowerPoint PPT Presentation

Citation preview

Page 1: Analysis of the Gareth Walsh Rovers Database

Stephen Taylor

Anthony Ung

Page 2: Analysis of the Gareth Walsh Rovers Database

This database is designed to catalogue the admission of new members into the Australian Scouting organisation the Rovers. The database stores information regarding the new members as well as which group they have joined.

Additional tables also store data regarding the crews and badges which can be earned by the various members.

The activities table also keeps track of all Rover related activities.

Page 3: Analysis of the Gareth Walsh Rovers Database
Page 4: Analysis of the Gareth Walsh Rovers Database
Page 5: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastNameFROM WalshRovers05Member;

memfirstname Memlastname

Gareth Walsh

Garth Nagle

Alison McKay

Page 6: Analysis of the Gareth Walsh Rovers Database

SELECT *FROM WalshRovers05FeesWHERE FeesDatepaid Is Not Null;

memcrewid feesdatedue

feesdatepaid feesamount

1 2005-06-05 2005-08-24 12

2 2005-06-05 2005-10-26 100

3 2005-06-05 2005-04-14 100

4 2005-06-05 2005-03-05 12

Page 7: Analysis of the Gareth Walsh Rovers Database

SELECT memcrewid, feesamountFROM WalshRovers05FeesWHERE FeesDatepaid Is Not Null;

memcrewid feesamount

1 12

2 100

3 100

4 12

5 12

6 100

7 100

Page 8: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName FROM WalshRovers05MemberWHERE MEMKnightingDate Is Null;

Memfirstname memlastname

Jenna Hall

Karina Hammond

Shaun Sproule

George Smith

Page 9: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName FROM WalshRovers05MemberWHERE MEMResigneddate Is Not Null;

memfirstname memlastname

Alison Mckay

Jenna Hall

Page 10: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName FROM WalshRovers05MemberWHERE MEMCrewID In (1,2,3);

Memfirstname memlastname

Gareth Walsh

Garth Nagle

Alison Mckay

Page 11: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName FROM WalshRovers05MemberWHERE MEMCrewID Not In (1,2,3);

Memfirstname memlastname

Lloyd Schrader

Kent Palmer

Jenna Hall

Page 12: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member;

SELECT MEMLastName, MEMFirstName

FROM WalshRovers05Member;

Memfirstname memlastname

Gareth Walsh

Garth Nagle

Alison Mckay

memlastname Memfirstname

Walsh Gareth

Nagle Garth

Mckay Alison

Page 13: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName FROM WalshRovers05MemberORDER BY MEMLastName;

memlastname Memfirstname

Brent Butler

Jenna Hall

Karina Hammond

Tim Hammond

Russell Lyons

Page 14: Analysis of the Gareth Walsh Rovers Database

SELECT memcrewid*feesamount AS random_no

FROM Walshrovers05fees ;random_n

o

12

200

400

500

600

700

800

Page 15: Analysis of the Gareth Walsh Rovers Database

When Counting by a specific column Null Values are not counted

SELECT COUNT(MEMResignedDate)FROM WalshRovers05Member;

Count

2

Page 16: Analysis of the Gareth Walsh Rovers Database

Count All will count all rows which have a value within the table

SELECT COUNT(*)FROM WalshRovers05Member;

Count

13

Page 17: Analysis of the Gareth Walsh Rovers Database

SELECT avg(feesamount)FROM walshrovers05fees;

AVG

83.2380952380952381

Page 18: Analysis of the Gareth Walsh Rovers Database

SELECT sum(feesamount) as TOTAL_FEESFROM walshrovers05fees;

total_fees

1748

Page 19: Analysis of the Gareth Walsh Rovers Database

SELECT min(feesamount)FROM walshrovers05fees ;

min

12

Page 20: Analysis of the Gareth Walsh Rovers Database

SELECT max(feesamount)FROM walshrovers05fees ;

max

100

Page 21: Analysis of the Gareth Walsh Rovers Database

SELECT memcrewid,memscoutid,memfirstname,memlastname

FROM walshrovers05member WHERE memfirstname LIKE 'Gar%';

memcrewid

memscoutid memfirstname memlastname

1 136369 Gareth Walsh

2 136368 Garth Nagle

Page 22: Analysis of the Gareth Walsh Rovers Database

SELECT memcrewid,memscoutid,memfirstname,memlastname

FROM walshrovers05member WHERE memfirstname LIKE '_ar%';

memcrewid

memscoutid memfirstname memlastname

1 136369 Gareth Walsh

2 136368 Garth Nagle

7 987654 Karina Hammond

Page 23: Analysis of the Gareth Walsh Rovers Database

Distinct Ensures no rows of identical values are displayed

The same crewid appears many times in the activity table but distinct displays it only once

SELECT DISTINCT memcrewidFROM walshrovers05memberactivityWHERE memcrewid = 1;

memcrewid

1

Page 24: Analysis of the Gareth Walsh Rovers Database

INSERT INTO WalshRovers05MemberActivity VALUES( 8,'Kiddy Moot', '2005/09/30' );

memcrewid activityname activitystartdate

8 Kiddy Moot 2005/09/30

Page 25: Analysis of the Gareth Walsh Rovers Database
Page 26: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member NATURAL JOIN WalshRovers05Position

WHERE PosTitle = 'Secretary'

GROUP BY MEMFirstName, MEMLastName;

Memfirstname

Memlastname

Jenna Hall

Page 27: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member, WalshRovers05Position

WHERE WalshRovers05Member.MEMCrewID =WalshRovers05Position.MEMCrewID

AND PosTitle = 'Secretary‘;

Memfirstname

Memlastname count

Jenna Hall 5

Page 28: Analysis of the Gareth Walsh Rovers Database
Page 29: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName,MEMLastName

FROM WalshRovers05Member

WHERE MEMCrewID = 1;

SELECT *

FROM WalshRovers05Fees

WHERE MEMCrewID = 1;

Memfirstname memlastname

Gareth Walsh

memcrewid

feesdatedue

feesdatepaid

feesamount

1 2005-06-05 2005-08-24 12

1 2004-06-05 2004-08-24 12

Page 30: Analysis of the Gareth Walsh Rovers Database

There is a many-to-many relationship between the members and activities table which is separated into two one-to-many relationships. There can be many members in each activity and each member can be in many activities.

SELECT *

FROM WalshRovers05MemberActivity

WHERE MEMCrewID = 1;

memcrewid activityname activitystartdate

1 Kiddy Moot 2005-09-30

1 Jota 2005-10-14

1 Bushdance 2005-09-17

Page 31: Analysis of the Gareth Walsh Rovers Database

SELECT *

FROM WalshRovers05MemberActivity

WHERE ActivityName = 'Bushdance';

memcrewid activityname activitystartdate

1 Bushdance 2005-09-17

2 Bushdance 2005-09-17

7 Bushdance 2005-09-17

Page 32: Analysis of the Gareth Walsh Rovers Database
Page 33: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName, Count(ActivityName)

FROM WalshRovers05MemberActivity NATURAL JOIN WalshRovers05Member NATURAL JOIN WalshRovers05Position

WHERE PosTitle = 'Crew Leader'

GROUP BY MEMFirstName, MEMLastName;

memfirstname memlastname count

Garth Nagle 7

Tim Hammond 5

Gareth Walsh 7

Page 34: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName, Count(ActivityName)

FROM WalshRovers05MemberActivity NATURAL JOIN WalshRovers05Member NATURAL JOIN WalshRovers05Position

WHERE PosTitle = 'Crew Leader'

GROUP BY MEMFirstName, MEMLastName

HAVING Count(ActivityName) > 5;

memfirstname memlastname count

Garth Nagle 7

Gareth Walsh 7

Page 35: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member

WHERE MEMCrewID = (SELECT avg(MEMCrewID)

FROM WalshRovers05MemberActivity

WHERE ActivityName = 'Bushdance');

memfirstname memlastname

Jenna Hall

Page 36: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member

WHERE MEMCrewID = (SELECT max(MEMCrewID)

FROM WalshRovers05MemberActivity

WHERE ActivityName = 'Bushdance');

memfirstname memlastname

Brent Butler

Page 37: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member

WHERE MEMCrewID = Any (SELECT MEMCrewID

FROM WalshRovers05MemberActivity

WHERE ActivityName = 'Bushdance');

memfirstname memlastname

Gareth Walsh

Garth Nagle

Karina Hammond

Tim Hammond

Brent Butler

Page 38: Analysis of the Gareth Walsh Rovers Database

SELECT MEMFirstName, MEMLastName

FROM WalshRovers05Member

WHERE MEMCrewID IN (SELECT MEMCrewID

FROM WalshRovers05MemberActivity

WHERE ActivityName = 'Bushdance');

memfirstname memlastname

Gareth Walsh

Garth Nagle

Karina Hammond

Tim Hammond

Brent Butler

Page 39: Analysis of the Gareth Walsh Rovers Database

SELECT WalshRovers05Member.memcrewid, Postitle

FROM WalshRovers05Member Left Join WalshRovers05Position Using (memcrewid);

Memcrewid postitle

1 Crew Leader

2 Crew Leader

3 NULL

4 NULL

Page 40: Analysis of the Gareth Walsh Rovers Database

SELECT WalshRovers05Member.memcrewid, Postitle

FROM WalshRovers05Member Right Join WalshRovers05Position Using (memcrewid);

Memcrewid postitle

1 Crew Leader

8 Crew Leader

2 Crew Leader

5 Treasurer

Page 41: Analysis of the Gareth Walsh Rovers Database

SELECT squires.MEMSquiringDate as investature_date , squires.MEMFirstName AS Squire_FirstName,

squires.MEMLastName AS Squire_LastName, rovers.MEMFirstName AS Rover_FirstName, rovers.MEMLastName AS

Rover_LastName

FROM WalshRovers05Member squires, WalshRovers05Member rovers

WHERE squires.MEMSquiringDate = rovers.MEMKnightingDate;

Investature_date

Squire_firstname

Squire_lastname

Rover_firstname

Rover_Lastname

2003-04-18 Jenna Hall Brent Butler

2003-04-18 Jenna Hall Alison Mckay

Page 42: Analysis of the Gareth Walsh Rovers Database
Page 43: Analysis of the Gareth Walsh Rovers Database

Create TABLE WalshRovers05Member

(

MEMCrewID INTEGER,

CONSTRAINT WalshRovers05Member_PK PRIMARY KEY (MEMCrewID),

Create TABLE WalshRovers05Position

(

MEMCrewID INTEGER,

CONSTRAINT WalshRovers05Position_MEMCrewID_FK FOREIGN KEY (MEMCrewID) REFERENCES WalshRovers05Member

ON DELETE RESTRICT

Page 44: Analysis of the Gareth Walsh Rovers Database

CONSTRAINT ValidGender CHECK ( MEMGender = 'M' OR MEMGender = 'F'),

CONSTRAINT ValidDOB CHECK ( MEMDOB BETWEEN '1900-01-01' AND '2005-01-01'),

CONSTRAINT ValidMEMJoiningDate CHECK ( MEMJoiningDate BETWEEN '1900-01-01' AND '2006-01-01'),

CONSTRAINT ValidMEMSquiringDate CHECK ( MEMSquiringDate BETWEEN '1900-01-01' AND '2006-01-01'),

CONSTRAINT ValidMEMKnightingDate CHECK ( MEMKnightingDate BETWEEN '1900-01-01' AND '2006-01-01')

Page 45: Analysis of the Gareth Walsh Rovers Database

CONSTRAINT WalshRovers05Fees_MEMCrewID_FK FOREIGN KEY (MEMCrewID) REFERENCES WalshRovers05Member

ON DELETE RESTRICT

Page 46: Analysis of the Gareth Walsh Rovers Database

CONSTRAINT WalshRovers05Badge_MEMCrewID_FK FOREIGN KEY (MEMCrewID) REFERENCES WalshRovers05Member

ON DELETE CASCADE

Page 47: Analysis of the Gareth Walsh Rovers Database

(removed from this case study, as normalization was not done well.)

Page 48: Analysis of the Gareth Walsh Rovers Database

CREATE VIEW fees1 (memcrewid, FeesDatedue, FeesDatePaid, FeesAmount)

AS SELECT *

FROM WalshRovers05Fees;

SELECT * FROM Fees1;

memcrewid feesdatedue feesdatepaid feesamount

1 2005-06-05 2005-08-24 12

2 2005-06-05 2005-10-26 100