0

我有一個廚房食譜腳本,我正在處理,並且無法訪問連接表中的字段。我的表是設置如下:數據建模/規範化故障

ingredients 
----------- 
ingredient_id (pk) 
ingredient_name (pk) 
ingredient_calories (pk) 

recipes 
------- 
recipe_id (pk) 
recipe_name (pk) 

meals 
----- 
meal_id (pk) 
meal_name (pk) 

recipe_has_ingredients 
---------------------- 
recipe_id (fk) 
ingredient_id (fk) 

meal_has_recipes 
---------------- 
meal_id (fk) 
recipe_id (fk) 

一個配方含有多種成分,和包含許多食譜。

的問題是:

雖然我可以選擇SUM(ingredient_calories)FROM recipe_has_ingredients,我無法弄清楚如何通過meal_has_recipes表(計算一餐總熱量)做到這一點。

任何幫助是極大的讚賞:)

回答

1

你已經過約束的事實表的成分,膳食和食譜的主鍵。只需使用id字段作爲PK。

您可以在任何名稱字段上創建唯一約束。

配方有配料表應該有recipe_id和ingredients_id作爲複合主鍵。

膳食有食譜表應該有meal_id和recipe_id作爲複合主鍵。

卡路里的一餐的查詢現在是

select meal_name, sum (ingredients_calories) from 

    meals, meal_has_recipes, recipes_has_ingredients, recipes, ingredients 

    where 

     meal_name = ' good food' 

     and meal_has_recipes.meal_id = meals.meal_id 

     and meals_has_recipes.recipe_id = recipes.recipe_id 

     and recipes.recipe_id = recipes_has_ingredients.recipe_id 

     and ingredients.ingredients_id = recipes_has_ingredients.ingredients_id; 
+0

感謝的人!工作就像一個魅力:) – phgdanny 2012-08-02 00:56:32