设计用于存储食谱的数据库

时间:2014-08-06 06:23:02

标签: c# sql-server database-design

我想创建一个搜索食谱的应用程序,并打算在下面创建3个表:

  • 食谱(recipeID,recipeName)。
  • 成分(成分ID,成分名称)。
  • Recipe_ingredients(recipeID,ingredientsID,amount)< =这个是映射两个 上面的表使用外键。

    我的问题是在这种情况下,如果我有100个食谱,那么我需要创建100个recipe_ingredients表,对吧?另一方面,总的来说,我必须创建一个食谱表,1个食材表和100个recipe_ingredients表,对吧?或者我只需要制作一个很长的食谱,包括所有100个食谱?我知道这个问题可能听起来很傻,但我对数据库世界这么新。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

您总共需要3张桌子:

  1. 食谱
  2. 成分
  3. Recipe_Ingredients。
  4. 在您当前的设计中,您只需将数据添加到数据库中;不需要100个表。我认为可能存在对表格这个词的误解。

    存储数据的表。因此,在食谱中,您可以存储RecipeID及其相应的recipeName。

    对于recipe_ingredients,您只需连接食谱和您选择的成分即可。没有必要为此创建100个表。只需在单个表格中添加数据即可。

    示例:假设您有一个配方需要5种成分:RecipeID = 1; IngredientID = 1到5.您必须通过与recipe_ingredientstable中的recipeID的连接添加这些成分中的每一个。

    以下条目将在此表中:

    PrimaryKey --- RecipeID --- IngredientID
    1 --- 1 --- 1
    2 --- 1 --- 2
    3 --- 1 --- 3
    4 --- 1 --- 4
    5 --- 1 --- 5

    请注意,PrimaryKey用于区分此表中的每个条目。

    如果您想要ID为1的食谱的所有成分;您可以通过选择所有IngredientID'来查询对于RecipeID 1,然后从您的ingredientstable加入ingredientName。

    另一方面,您可能也想重新考虑您的名字。看看这里:Table Naming Dilemma: Singular vs. Plural Names

答案 1 :(得分:0)

i think you only need two tables here.
        
  1. 食谱 - 食谱,名称等......     
  2.     
  3. 成分 - IngredientsID,RecipeID(对Receipe表的引用),名称,金额     

答案 2 :(得分:0)

我认为这会对你有帮助,两张桌子就能完成这项工作

recpies (recpieID, IngredientID)
Ingredient (IngrdientID , IngrdientName , Amount )

使事情变得简单就像这样插入 例如我有食谱:

recipe name : cake  
ingredients : sugar = 1 kg
              color = 100 gm
              soda  = 500 gm

因此,当您将多种成分插入成分表时,请保持成分ID相同 也就是说,如果我们将那个蛋糕重新插入表中,那就像那样

recpies(1,0001)   // some random unique ID
ingredient (0001 , sugar , 1 kg )
           (0001 , color , 100 gm)
           (0001 , soda  , 500 gm )