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 the term to discuss your project. See the class schedule for "Project review meetings." In the end you will present/demo an overview of your project.
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 6).
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. 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 "Project teams" due date indicated on the Schedule page of the course web site. If you are not assigned to a team on that date, I will randomly assign you to one.
Evaluation (25% 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 as indicated on the Schedule page of the course web site under "Project review meetings", but the write up is not due until the "Project plan" date. You should view the 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 in the textbox on Canvas.
- EERD (5%) 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:
- 1%: All entities identified and represented as tables
- 2%: All tables normalized to 3NF
- 2%: Appropriate relationships between entities created (e.g., 1:1, 1:M, M:N)
- Final presentation (15%) 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.
-
Project write up rubric (5%):
- Clear description of the project's purpose and who it serves
- Discussion of the business rules implemented
- Lessons learned from initial project plan.
-
Project presentation rubric (5%):
- Presentation quality
- Clear description of project
- Presented in logical order
- Easy to understand design and implementation choices
- Demo of implemented features
- Discussion of challenges/changes from initial plan.
- Your participation (5%): Each teammate will rate the participation of every other teammate on scale of 0 to 100. A score of 25% suggests a person contributed their fair share of the work. A higher score indicates the person did more than required. A lower score indicates the person did less.
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.