Re: [Nolug] Database design

From: Petri Laihonen <pietu_at_weblizards.net>
Date: Wed, 15 Jul 2009 12:46:59 -0500
Message-ID: <4A5E1613.2010408@weblizards.net>

Kevin Kreamer wrote:
> On Mon, Jul 13, 2009 at 17:26, Chris Jones <techmaster@gmail.com
> <mailto:techmaster@gmail.com>> wrote:
>
> I might be working on a database-driven app pretty soon, but have a
> question on what might be the best approach for database design.
>
> Let's say you're doing something like a recipe database. You would
> have multiple recipes, obviously. I'm just trying to figure out the
> best way to do the table layout.
>
> Each recipe would look like this:
>
> Aunt Sue's God Awful Cobbler
> =======================
> 2 cups flour
> 3 eggs
> 2 cups sugar
> 3 lbs of tripe
>
> Mix all ingredients, throw in the oven at 400F for 30 minutes.
> Eat. Vomit.
>
>
> So, you are storing various types of information on each recipe, such
> as the recipe's name, the directions on how to make it, but then you
> have an ingredients list, which would essentially have to be a 2D
> array. It would store the # of units, the unit type, and what exactly
> the ingredient is...times however many ingredients that particular
> recipe would have. That's where a bigger part of the problem comes
> in, that each recipe could have 3 ingredients, or 20.
>
> I'm not sure if you should just have a ton of columns of data for your
> recipe table to accomodate for all the possible ingredients.
>
> My own wisdom of database design says that's probably a bad idea.
>
> So, should I just have an ingredients table that looks like this:
> (first column is an ID number corresponding to the recipe it is for)
>
> 1, 2, cups, flour
> 1, 3,, eggs
> 1, 2, cups, sugar
> 1, 3, lbs, tripe
> 2, 1, cups, flour
> 2, 3, tsp, vanilla
> 2, 2, cups, sugar
>
> And that is basically ALL ingredients of ALL recipes, then you just do
> a SELECT WHERE ID = 1 to pull all the items for recipe # 1.
>
> Is that the way to go for that sort of database? Or is there yet
> another way that would be even better?
> ___________________
> Nolug mailing list
> nolug@nolug.org <mailto:nolug@nolug.org>
>
>
> Your second idea is what you want to do, basically. You'll want each
> ingredient as its own row in an recipe_ingredient table. For
> normalization, you'll probably also want an ingredient table with an
> ID and an ingredient name (1 => flour, 2 => sugar, 3 => vanilla, 4 =>
> tripe, etc.) And a unit table (1 => cups, 2=> tablespoons, 3 =>
> metric tons, etc.).
>
> The issue with all of this, of course, is that there are some recipes
> that don't match this kinda of idealized recipe (say, for Grandma's
> gumbo). So, the other course is to just store each recipe as a file,
> and do a text match on the file contents, google-like.
>
> Kevin

I think I'm missing a reason for the database structure being so complex.
I would just make one table with 4 columns (mostly just type of text)
and that's basically it. Of course for searches and such, one can play
with different indexing stuff.

My columns would be :
id, rcp_name, recipe, instructions

To further spice up the site, we add table for categories and we can
then link the categories table to the actual recipe table.

Petri

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
___________________
Nolug mailing list
nolug@nolug.org
Received on 07/15/09

This archive was generated by hypermail 2.2.0 : 08/06/09 EDT