我正在为配方成本管理创建数据库架构,但遇到一个我不知道如何最好解决的问题。
我有一张餐桌配料(Id_ingedients,Name_ingredients等。) 我有一张餐桌食谱(Id_recipe,Name_recipe,Type_recipe等)。
Type_recipe是:Finished_recipe或Sub_recipe
我有一个过渡表Ingredients_recipe(Id_ingredients,Id_recipe)
现在是我的问题:食谱可能包含成分(简单),但也可能包含次级食谱类型!而且Sub_recipe类型的配方可以包含成分,也可以包含sub_recipe。
我找到了一个degre Sub_recipe的解决方案:
我创建一个表Sub_recipe(Id_sub_recipe,Subrecipe名称,...) 和中间表ingedients_sub_recipe(Id_sub_recipe,id_ingredients) 和一个表sub_recipe_recipe(id_recipe,id_sub_recipe)链接配方和sub_recipe
但是,如果此sub_recipe包含另一个sub_recipe,则此架构不起作用!
我认为我在数据库设计上错了,您能帮我设计数据库架构吗?
谢谢
答案 0 :(得分:0)
您只需要3张桌子:
例如,如果您的菜是用食谱1烹饪的:
所以您的过渡表(CONNECTIONS)看起来像这样
+------------------+-----------------+---------------------+
| Parent_recipe_id | Child_recipe_id | Child_ingredient_id |
+------------------+-----------------+---------------------+
| 1 | NULL | 1 |
+------------------+-----------------+---------------------+
| 1 | NULL | 2 |
+------------------+-----------------+---------------------+
| 1 | 2 | NULL |
+------------------+-----------------+---------------------+
| 1 | 3 | NULL |
+------------------+-----------------+---------------------+
| 2 | NULL | 3 |
+------------------+-----------------+---------------------+
| 2 | NULL | 4 |
+------------------+-----------------+---------------------+
| 2 | NULL | 5 |
+------------------+-----------------+---------------------+
| 3 | NULL | 6 |
+------------------+-----------------+---------------------+
| 3 | 4 | NULL |
+------------------+-----------------+---------------------+
| 4 | 5 | NULL |
+------------------+-----------------+---------------------+
| 4 | 6 | NULL |
+------------------+-----------------+---------------------+
| 5 | NULL | 7 |
+------------------+-----------------+---------------------+
| 5 | NULL | 8 |
+------------------+-----------------+---------------------+
| 6 | NULL | 9 |
+------------------+-----------------+---------------------+
| 6 | NULL | 10 |
+------------------+-----------------+---------------------+