我想创建一个搜索食谱的应用程序,并打算在下面创建3个表:
Recipe_ingredients(recipeID,ingredientsID,amount)< =这个是映射两个 上面的表使用外键。
我的问题是在这种情况下,如果我有100个食谱,那么我需要创建100个recipe_ingredients表,对吧?另一方面,总的来说,我必须创建一个食谱表,1个食材表和100个recipe_ingredients表,对吧?或者我只需要制作一个很长的食谱,包括所有100个食谱?我知道这个问题可能听起来很傻,但我对数据库世界这么新。有什么帮助吗?
答案 0 :(得分:2)
您总共需要3张桌子:
在您当前的设计中,您只需将数据添加到数据库中;不需要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.
答案 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 )