Recipe Finder Schema

So in order to build a single recipe we need to come up with several classes and properties that will make up the structure of my database. Most of my decisions concerning the format of the schema were named to follow the microformat outlined on the following page:
http://microformats.org/wiki/hrecipe
I have decided to come up with 4 key classifications to deliver this project. Three of them come under building recipes, namely Recipe, Ingredient and Nutrition. The final classification is for an Account because I would like to immediately tie in recipes to users in order to bind them as ownership for a user. I believe ownership, editing, and enhancing other user’s recipes can be a cornerstone to the success of this project. Some of the extra¬†properties, or those items not in the microformat, highlighted below will display this option of editing existing recipes. In any case, here are the properties I have decided to use for the project:

Nutrition

  • value: number value of nutrition item.
  • unit: type of value – ounces, teaspoons, ect.
  • nutrition: nutrition information.

Ingredient

  • value: number value of ingredient.
  • unit: type of value – ounces, teaspoons, ect.
  • ingredient: name of ingredient.

Recipe

  • fn: name of recipe.
  • ingredients: an array of ingredients to be used in the recipe.
  • secretIngredients: an array of ingredients to be marked as secret. This extra feature enables a user to mark certain ingredients as secret or marked for special display.
  • addedIngredients: This property may be used for adding items to an existing recipe or one owned by a different account user. (This property may necessitate another classification of Borrowed Recipe).
  • removedIngredients: like the last property, you can also mark ingredients to take them off a particular recipe.
  • instructions: details about constructing the recipe.
  • additionalInstructions: adding the ability to edit instructions for a particular recipe. For example – skip 400 degrees, cook at 450 degrees for 5 minutes faster cooking time.
  • yield: marks the amount of servings created by a recipe.
  • duration: time for recipe from start to finish.
  • prepDuration: time for preparation of recipe (marinate overnight).
  • photo: image link of recipe.
  • video: video link for recipe (bring out the inner Julia Child).
  • summary: quick description of recipe.
  • author: link to an Account to bind ownership.
  • published: original source of recipe.
  • nutrition: array of nutritional elements making up the nutrition information.
  • tag: tagging a recipe with other keywords for searching capabilities.
  • rating:not quite sure where I will take the rating, thumbs up thumbs down, 1-5, ect. I do like the Facebook approach of keeping ratings simple as possible. It promotes more voting interaction. However, I don’t want to copy cat Facebook too much. Possibly also similar to Stack Overflow where you can also record negative feedback is interesting.

Account

  • email: a unique email account that cannot be duplicated in the database.
  • password: a password chosen by the user.
  • name:
  • first: first name of the account’s owner.
  • last: last name of the account’s owner.
  • photoUrl: a photo of the user.
  • biography: any other cooking related accolades a user wants to associate with their account.
  • recipes: array of recipes that belong to the account.
  • borrowedRecipes: array of recipes the user has altered.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>