2016-03-04 42 views
0

我正在创建食谱应用程序和我从数据库获得的所有食谱。我正在使用phpMyAdmin。简单的数据库应该如何看起来像两个表?

我之前几乎没有关于数据库的类,所以我知道如何将它用于简单任务。

现在我有两个表RecipesIngredients。我有两个简单的问题:

  1. 我应该创建单独的recipe id还是使用自动分配的那个? 我将在应用程序中搜索食谱,并从列表中选取结果。

  2. 我应该如何连接Ingredients表每Recipe表。 我认为我应该在IngredientRecipe表中使用相同的ID(“reciep_id”),以便在显示结果后再连接它们。

回答

2
  1. 我认为标准配方ID可以接受的变种,因为我无法想象配方自然主键。

  2. 每个食谱都包含一些食材。任何配料都可以用于多种配方。所以你应该使用链接表的标准n-n关系。

你的表可以是这样的(link to sqlfiddle with this code):

CREATE TABLE Recipes (
id int, 
name text, 
PRIMARY KEY (`id`) 
); 

CREATE TABLE Ingredients(
id int, 
name text, 
PRIMARY KEY (`id`) 
); 

CREATE TABLE Recipes2Ingredients (
rec_id int, 
ing_id int, 
amount int, 
-- and maybe some other needed fields 
FOREIGN KEY (rec_id) 
    REFERENCES Recipes(id), 
FOREIGN KEY (ing_id) 
    REFERENCES Ingredients(id) 
); 
+2

我同意,但你应该增加更多的一些属性'Recipes2Ingredients',像'amount'。例如,对于配方#1,您需要一个洋葱(=配料),配方#2需要五个洋葱。 – PerlDuck

+0

非常感谢,你是对的。我修复答案。我很少做饭:)所以我不使用食谱很多。 –

+1

不客气。我做饭,这可能就是我想到的原因。除此之外,你的答案对我来说看起来很合理。人们可以想象一个像“组合”(如猪肉,面条,素食......)的“食谱”的父表,但这超出了OP的问题。 – PerlDuck

相关问题