Well, to get this started, I think you want to go back to your university days and, indeed, create a user login. For the administrators, if nobody else.
You could probably combine that with the tracking stuff.
isXXX and isYYY are not real... just placeholders for other possible levels of responsibility you might want to assign. You could also (or instead) have a numeric adminLevel field. All depends on how you want to control access to various web pages and/or data in the DB.
CREATE TABLE volunteers (
volid INT AUTO_INCREMENT PRIMARY KEY,
And then, for the project you metioned:
So your volunteerActivites table is actually a MANY-TO-MANY table (look it up if you aren't familiar with the term).
CREATE TABLE activities (
actid INT AUTO_INCREMENT PRIMARY KEY,
activity VARCHAR( 200 ),
... any other fields to describe the activity ...
... maybe even something like ...
requiresAdministrator BOOLEAN, /* only admins can do this activity when true */
requiresSupervisor BOOLEAN, /* only supervisors when true */
CREATE TABLE volunteerActivities (
... other fields to describe what volunteer did ...
CONSTRAINT FOREIGN KEY volid REFERENCES volunteers(volid),
CONSTRAINT FOREIGN KEY actid REFERENCES activities(actid)
And now you have a design that will support a myriad of interesting queries.