这是我的问题的后续内容:如何在MySQL中记录记录的顺序集合 https://stackoverflow.com/questions/9610942/how-to-record-sequential-collections-of-records-in-mysql
简而言之,我想在 MySQL 中实现一个食谱表和另一个指令表。菜谱是一系列连续的指令或其他食谱。例如,你可以想象一个Peach_preserve
食谱,和一个Peach_tart
使用的是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
在这里你可以看到Recipe1
由 3 条指令组成,并且Recipe2
由一条指令组成,那么Recipe1
,然后是另外 2 条指令,其中一条是步骤 1 的重复。我想到了其他方法来捕捉这个想法,但它们涉及一堆空条目。我不喜欢上面的是关键是由 4 个属性组成的......
我的问题是:
- 将递归思想合并到数据库中是个好主意吗?
- 如果是的话,这是这样做的方法,还是可以改进?
快速编辑:我开始阅读层次结构。在我的示例中,每个食谱可以有多个父项。
这是一种非常常见的技术。它用于在数据库中存储分层数据(您称之为递归)。
但是,您必须管理应用程序中的完整性,因为无法使用外键,因为该关系以 isRecipe 标志为条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)