Project

Over the span of the term you will work on a database-related project of your choosing with a team of three other students. This project can be as extensive as you'd like, but remember you'll only have one term to work on it. I will meet with each team individually during week five to discuss your project. In the end you will present/demo an overview of your project to the class.

Requirements

You must use a relational database (e.g., MySQL) to manage data in your project. The project should have at least three database tables and must involve CRUD transactions (e.g., do not simply read a data table and then perform some machine learning on the data held in memory). Some ideas for tables in addition to those needed to implement the business logic: a user table, perhaps with a list of permissions for each user; an audit table which logs who has accessed/modified/deleted rows in the database and when, perhaps using database triggers (see day 7).

Because you must have transactions (e.g., create, read, update, and/or delete operations), you'll need to provide some sort of front end for user interaction. That front end, however, need not be a work of art. I'll be evaluating the database design and implementation, not the project's aesthetics.

Team composition

You will work in teams of four (neither fewer nor more) on this assignment. Each student on a team will receive the same grade for the project.

Sign up for your teams by entering the Dartmouth email addresses of the students on your team in a spreadsheet posted on Canvas under Pages by the due date indicated on the Schedule page of the course web site (I will assign project plan and final presentation dates soon). You may make changes to your team's composition until April 20, but I will consider teams set on that date. If you are not assigned to a team on that date, I will randomly assign you to one.

Evaluation (40% of grade)

The project will consist of several phases:

  • Project plan (5%) Write a 2-3 page description of your project, what is does, who is serves, the major entities involved, the business rules required, and a plan for the front end. We will discuss this in person (well, virtually in person this term) as indicated on the Schedule page of the course web site. You should view this in-person meeting as if you were trying to convince a manager at a company to fund your idea. Submit a pdf of your write up, listing all team members, on Canvas.

  • EERD (10%) Create a normalized Extended Entity Relationship Diagram for your project using MySQL Workbench. All tables should be at least in Third Normal Form (3NF), unless there is a compelling reason otherwise (if so, you should explain your decisions). Afterward, forward engineer the database schema. Submit the .mwb as well as a pdf describing each of the entities and their relationships on Canvas.
    EERD rubric (10%):
    • 4%: All entities identified and represented as tables
    • 3%: All tables normalized to 3NF
    • 3%: Appropriate relationships between entities created (e.g., 1:1, 1:M, M:N)

  • Final presentation (25%) Each team will give a 10 minute presentation/demo their project during the last week of class where you will give an overview of your project and highlight how you solved it. Submit a final pdf write up of your project updating your original project plan. Highlight the changes from your initial plan as you implemented your final solution. The write up is worth 10% and the presentation is worth 15% of the final grade.
  • Project write up rubric (10%):
    • 3%: Clear description of the project's purpose and who it serves
    • 4%: Discussion of the business rules implemented
    • 3%: Lessons learned from initial project plan
    Project presentation rubric (15%):
    • 5%: Presentation quality
      • Clear description of project
      • Presented in logical order
      • Easy to understand design and implementation choices
    • 5%: Demo of implemented features
    • 3%: Discussion of challenges/changes from initial plan
    • 2%: Questions and answers
    Please submit both your front end and back code, as well as a dump of your database in a zip file on the Presentation assignment on Canvas.