这是我的问题的后续跟进:How to record sequential collections of records in MySQL
简而言之,我想在MySQL中实现一个食谱表和另一个指令。配方是一系列连续的指令或其他配方。例如,您可以想象Peach_preserve
食谱和使用Peach_tart
的{{1}},以及一系列其他步骤(说明)。 Peach_preserve
可用于许多其他食谱。
在我之前的一个问题中,我建议设计允许配方中每条指令的特定订单:
Peach_preserve
我现在想要做的是结合一个想法,即在一个配方中,子组件可能是另一个配方而不是原子/离散指令。所以我的想法就是这样做:
recipe
id name
1 Recipe1
2 Recipe2
recipe_instruction
recipe_id instruction_id sortorder
1 5 1
1 3 2
1 4 3
2 6 1
2 7 2
2 3 3
2 6 4
您可以在此处看到recipe
id name
1 Recipe1
2 Recipe2
recipe_instruction
recipe_id step_id isRecipe sortorder
1 5 F 1
1 3 F 2
1 4 F 3
2 1 F 1
2 1 T 2
2 2 F 3
2 1 F 4
由3条指令组成,Recipe1
由一条指令组成,然后是Recipe2
,然后是另外2条指令,其中一条是重复的我想到了其他方法来捕捉这个想法,但它们涉及一堆空条目。我在上面不喜欢的是,密钥是由4个属性组成的......
我的问题是:
快速编辑:我开始阅读层次结构。在我的例子中,每个食谱可以有几个父母。
答案 0 :(得分:2)
这是一种非常常见的技术。它用于在db中存储分层数据(您称之为递归)。
但是,您必须管理应用程序中的完整性,因为无法使用外键,因为该关系是以isRecipe标志为条件的。