Norway

SURFCal



WHEN:
May 2018 - June 2018

WHAT:
Semester-Long Project in Relational Databases Course

WHERE:
University of British Columbia, BC, Canada

TOOLS:
  • Javascript
  • PHP
  • MySQL
  • HTML/CSS

  • Oracle VirtualBox
  • Ubuntu Server
  • Apache

This was a 2-month long project that involved building SURFCal , a calendar web application, in which users can create calendars, add different types of items to it, and share their calendars with other users.

We designed and built a relational database to support login and calendar functionality, adhering to DBMS normalization forms such as BCNF and 3NF.

Special thanks to my awesome team!
Aaron Huang, Justin Lee, Natalie Ngan







May 2018
Weeks 1 - 2

Planning

Brainstorming functionality that application should support.
Identified main calendar items (Events, Tasks, Reminders, Notes) that will be modelled as entities in the database. Each item will additionally have properties such as a name, creation date, reminder, start/end date time, notes, and location.



May 2018
Weeks 3 - 4

Schema Solidification

Produced an entity-relationship diagram mapping out all relationships, along with outline of schema, in which we justified how each entity's functional dependency did not violate BCNF.

All queries to be supported by the application were also identified. Asides from the standard selection, projection and delete queries, the app would also utilize more complex queries, including join, division, aggregation, and nested aggregation with group-by.






June 2018
Weeks 5 - 6

Implementation

Development spanned roughly 2 weeks, with work split among members.

Was personally involved in back and front-end roles - assisted in writing half of our database queries for the backend, and was responsible for dynamically generating the HTML code for all Calendar-related pages in the frontend. This involved implementing the ability to retrieve, update and delete individual Calendar items, organizing these items by type for display, and having the web page generate the necessary visuals or warnings depending on user actions.