数据库设计:嵌套表



我正在为配方成本管理创建一个数据库模式,遇到了一个我不知道如何最好地解决的问题。

我有一张配料表(Id_ingedients,Name_ingredients,….)我有一个表格配方(Id_recipe,Name_recipe、Type_recipe……)

Type_recipe为:Finished_procipe或Sub_recipe

我有一个转换表ingredients_recipe(Id_ingredients,Id_recipe)

现在我的问题是:食谱可以包含配料(简单),但也可以包含子食谱类型的食谱!!此外,Sub_recipe类型的配方可以包含成分,但也可以包含Sub_recipe。

我找到了一个一级Sub_recipe:的解决方案

我创建了一个表Sub_recipe(Id_Sub_recipe,Subrecipe名称,…)以及中间表ingedients_sub_recipe(Id_sub_recipe,Id_ingredients)以及用于链接配方和sub_recipe 的表sub_recipe_recipe(id_recipe,id_sub_recipe)

但是如果这个sub_recipe包含另一个子_recipe,这个模式就不起作用!!

我觉得我在数据库设计上错了,你能帮我设计数据库模式吗。

感谢

您只需要3个表:

  1. 成分-ingredient_id、ingredient_name
  2. recipes-recipe_id、recipe_name、。。。。(不需要类型,因为在更大的菜中使用时,每个食谱都可以表现得像子食谱)
  3. 连接-parent_recipe_id、child_recipe_id、child_ingredient_id

例如,如果你的菜是按照食谱1:烹饪的

  • 配方1包含成分A和B+配方2+配方3
  • 配方2包含成分C、D和E
  • 配方3包含成分F+配方4
  • 配方4包含配方5+配方6,但本身没有任何成分
  • 配方5含有成分G和H
  • 配方6含有K和L成分

所以你的转换表(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          |
+------------------+-----------------+---------------------+

相关内容

  • 没有找到相关文章

最新更新