Assignment 3 -- Complex Database Challenge
-- Cookbot --
Teamwork is Optional but Advised !!
In this assignment I want you to design a database that can be used by a cooking robot (not a human chef) to prepare an indeterminate number of dishes. Your database is where the information for the dishes will be stored.
** Just A Note Up Front **
This is not a trivial challenge, so if you find yourselves creating a simple database, you are not on the right track. Here are some of the challenges you must accommodate with your design:
  1. First and foremost you are feeding data to a robot so the robot will work based on a series of linear instructions. You can either store these instructions in the database in advance or allow the robot a mechanism to build them on the fly, but your robot does not have any AI
  2. Cooking is done in steps or stages. You have to implement a way to handle stages -- in other words which individual tasks (add salt) are done at which stages (like during create sauce)
  3. Any human user can add recipes to the robots repertoire by using the UI for the database. You do not have to create the UI in this assignment but your design must support the use of a user-based UI (you can't hard code instructions in the database). This step also introduces the concept of a recipe as the users perspective of the contents of the database, so your design must support this concept
  4. Your design must support the materials (pots & pans) and supplies (ingredients) needed to make the dishes. These will be your base elements that will come together to form stages, which will then be sequenced together to form dishes
Hint:
If you have had my AD-400 Project Management class, it might be helpful to take a non-trivial dish (something like lasagna) and put it into ProjectLibre just to get an understanding of the relationships involved. It may also help to load a recipe or 2 into the database.

Hybrid Class Assignment - Normalization
Make a copy of your robot cooking database (DO NOT DO THIS ON THE SAME COPY AS PART 1)
Break 4 (with respect to Normalization) of your tables in the following fashion:
  • Break a table so it is not 1NF Compliant
  • Break a table so it is not 2NF Compliant
  • Break a table so it is not 3NF Compliant
  • Break a table so it is not BCNF Compliant
This is not intended to be a time consuming exercise. Look at my slides on each form of compliance and extrapolate the concept into one of your tables. Each non-compliant table should be mutually exclusive of the other forms of non-compliance -- Don't try to put 2 forms of non-compliance in the same table.


Assignment Submission Criteria
To turn in this assignment you will go to the NSC Canvas shell for this class. Submit:
  1. MySQL Workbench ERD and Forward Engineered database for part 1
  2. A presentation of 4 slides, each with 1 ERD object and a description of its problem
Do not submit your assignments any other way