Partager via


Application “Business” Requirements

I thought I’d better post what I am trying to achieve with this application.

Our running club is a “Hash House Harriers” club (actually Harriets, because it is a ladies’ club that tolerates men) in Singapore.  The club meets weekly to run “cross country”.  Our runs/walks are best when they are in jungle/forest, but they also incorporate road, trail etc.  After the run the club assembles for drinks at the run site and tells stories about what happened on the run.  The club has an elected committee that is responsible for organizing the activities of the club.  The responsibilities include:

  • Organizing a run for each week.  This involves getting 2-3 members to volunteer to lay out where the run will go.
  • Notifying members and guests of the run location each week by web site and email.
  • Keeping a membership list.
  • Collecting subscriptions and run guest fees and reporting annually on the finances of the club.
  • Reporting club status to the Registar of Societies in Singapore.
  • Recording run attendance.  A tradition of our hash is that people are presented with milestone awards, for completing 50, 100, 150 etc runs.  One of our members has completed 1,000 runs (the club has been running since 1973).
  • Organizing special events, for example anniversaries (we had our 35th Anniversary run in 2008) and milestone runs for the club (run 2,000 will be in October 2011).
  • Keeping a historical record of the activities of the club.

The records of the club are kept in Excel spreadsheets – the member’s list, run attendance list, financial records, and the “hareline” or list of upcoming runs and who is organizing them.  These sheets are maintained by different people and they regularly get out of synch.  If a new member joins, the treasurer, secretary, and run organizer all have to remember to update their sheets and in a consistent way.  Of course that doesn’t happen!

My solution to this issue is:

  1. Use a central database to keep one copy of the truth for all records.
  2. Allow committee members to update these records through a web interface (and one day, perhaps, through a phone web browser or application from the run site).
  3. Allow members to validate and, in appropriate situations, update their own records (for example change a phone number, or claim credit for a run they attended that was not correctly recorded by the committee).

The design is probably best represented by the database schema I have developed (more on this later):

image