如何在MySQL中实现多对多的层次结构

2024-02-13

这是我的问题的后续内容:如何在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 个属性组成的......

我的问题是:

  1. 将递归思想合并到数据库中是个好主意吗?
  2. 如果是的话,这是这样做的方法,还是可以改进?

快速编辑:我开始阅读层次结构。在我的示例中,每个食谱可以有多个父项。


这是一种非常常见的技术。它用于在数据库中存储分层数据(您称之为递归)。

但是,您必须管理应用程序中的完整性,因为无法使用外键,因为该关系以 isRecipe 标志为条件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在MySQL中实现多对多的层次结构 的相关文章

随机推荐