在数据库中表示分层数据似乎有几个很好的选项,其中最流行的显然是树遍历算法。
在我的情况下,另一个可能起作用的选项是递归。这可能涉及保存父ID并从那里开始——虽然这也需要某种方向。
现在我有一个问题,我有一组可以由连接图表来描述连接的项目,但没有根和不一定有起点。例如,可能会发生项目彼此环绕,因此排序仅为元素而不完整。无论排序是“父”还是“子”取决于您从哪个方向开始,这是一种说法。 此外,每个连接应该通过多个属性进行特征化,因此需要以某种方式识别连接。 以下是一个示例,尽管请注意它只是一个小示例,但您已经可以看到简单的遍历算法可能从254开始,然后从203到162,然后254实际上是162的子代-这可能是个问题(我远非计算机科学专业)所以我真的不知道)
另一件事是我限制在Access中,这意味着我几乎只能使用标准SQL命令,而没有递归或SQL函数。
例如,在SQL中许多算法在飞行中将其转换为左/右遍历树的算法不适用于Access SQL。
我对解决这个问题没有太多依赖于VBA也有很大兴趣。
就性能而言,我预计少于5000个项目,虽然涉及元素属性和它们的连接的查询可能有数十个元素。首先只有不到10个用户同时使用数据库,但如果它们工作良好,这些事情往往会迅速扩展。
那么,您将如何实现此结构?
在我的情况下,另一个可能起作用的选项是递归。这可能涉及保存父ID并从那里开始——虽然这也需要某种方向。
现在我有一个问题,我有一组可以由连接图表来描述连接的项目,但没有根和不一定有起点。例如,可能会发生项目彼此环绕,因此排序仅为元素而不完整。无论排序是“父”还是“子”取决于您从哪个方向开始,这是一种说法。 此外,每个连接应该通过多个属性进行特征化,因此需要以某种方式识别连接。 以下是一个示例,尽管请注意它只是一个小示例,但您已经可以看到简单的遍历算法可能从254开始,然后从203到162,然后254实际上是162的子代-这可能是个问题(我远非计算机科学专业)所以我真的不知道)
![example](https://istack.dev59.com/RPvKm.webp)
就性能而言,我预计少于5000个项目,虽然涉及元素属性和它们的连接的查询可能有数十个元素。首先只有不到10个用户同时使用数据库,但如果它们工作良好,这些事情往往会迅速扩展。
那么,您将如何实现此结构?