Mysql 用于在依赖关系网络中存储分支/合并的数据库架构

Mysql 用于在依赖关系网络中存储分支/合并的数据库架构,mysql,database,recursion,network-programming,normalization,Mysql,Database,Recursion,Network Programming,Normalization,我喜欢用于存储分层数据的嵌套集模型,并且我想找到一个类似的模型用于在项目管理应用程序中存储任务依赖关系 问题1:递归数据库查询/函数调用的不可持续复杂性: 现在,我有一个简单的m:n表,它存储任务/阻止程序对,但在数据中循环最好是未优化的,最坏是递归噩梦。我希望在一个紧密循环中限制数据库调用,并且——通过一个“普通”树——我将使用一个嵌套集来实现这一点 第2期:多重继承,多重后代 我不能使用树的原因是这个集合不仅包含分支,还包含合并。有些任务有多个“父节点”——如果您愿意的话——在启动之前必须完

我喜欢用于存储分层数据的嵌套集模型,并且我想找到一个类似的模型用于在项目管理应用程序中存储任务依赖关系

问题1:递归数据库查询/函数调用的不可持续复杂性:

现在,我有一个简单的m:n表,它存储任务/阻止程序对,但在数据中循环最好是未优化的,最坏是递归噩梦。我希望在一个紧密循环中限制数据库调用,并且——通过一个“普通”树——我将使用一个嵌套集来实现这一点

第2期:多重继承,多重后代

我不能使用树的原因是这个集合不仅包含分支,还包含合并。有些任务有多个“父节点”——如果您愿意的话——在启动之前必须完成多个任务。这似乎与我假设SVN或Git必须工作以存储版本控制信息的方式类似

我想运行如下查询:

  • 根据特定任务递归获取所有任务(自顶向下遍历)
  • 添加特定任务及其所有依赖项的所有时间估计(自底向上遍历)
  • 将任务的潜在依赖项列表约束为逻辑选项(不能在循环中依赖于自身)
目前可能的选项:

  • 认清重点,处理复杂性
  • 为所有序列编制索引(“路线”,如果您愿意的话,以完成所有任务)——仍然不确定如何存储该索引
  • 存储自顶向下的嵌套集和自底向上的嵌套集
  • 祷告某位古鲁在这个问题上比我知道得更多

最好的方法是什么(以及您对它是否有效的把握有多大)?

我将从任务和任务关系表开始。
将任务关系表用于多个父级或子级。

任务关系的父字段和子字段都是任务表中的id

那正是我开始的地方。这就是问题的症结所在,还是有针对层次结构优化查询的下一步?下一步可能是非规范化。它有好的方面(性能)和坏的方面(一致性、重复性)好的,所以我可以保持关系的规范化(根据您的回答),但是缓存一些隐含的关系(非规范化的表示)以提高查询数据的性能。这是有道理的。谢谢