gpt4 book ai didi

python - 如何在 SQL 数据库中表示层次结构

转载 作者:行者123 更新时间:2023-11-28 17:46:01 25 4
gpt4 key购买 nike

我需要在我的数据库中表示地理对象的层次结构。每个对象都有一个名称和地理坐标(纬度/经度)。

层次结构的第一级可能是两个可能值之一:海洋 | 陆地

2nd level(Marine)可能是 Seas |河流。第 3 级(代表海洋)包含所有可能的海洋名称(例如波罗的海)。

另外,在第三层,我可能想将每条海/河与海洋联系起来,所有河流 还应该与它相关的一些 Sea 联系起来。还有第 4、5 和 6 层级,它们是较小类型的对象。

重要:在这种层次结构中可以跳过 [3, 4, 5, 6] 级别的任意组合,即我们可以有级别 (1, 2, 3, 4, 5)或 (1, 2, 3) 或 (1, 2, 3, 5)。

此外,我将在我的应用程序中使用 sqlalchemy ORM 进行对象表示。

我应该为不同的层次结构级别使用不同的表,并为父节点使用外键吗?对于跳过的级别,我们可以为每个层次结构路径使用虚拟节点。

我是否应该为所有节点制作一个统一的表并将其级别存储为整数值,父节点为 FK(即邻接表结构)?

每种方法的优缺点是什么?

谁有其他想法(考虑到所有限制条件)?

最佳答案

这取决于您要对数据做什么。您的单独表格方法适用于某些类型的用途。

如果您使用统一表格,则可以采用两种方法。第一个是邻接表模型。关系模式中的邻接表模型看起来与对象世界中的不同。

第二种是嵌套集合模型。 Wikipedia Article .第一个更容易更新,而第二个更容易用于复杂查询,例如查找给定的子树。

关于python - 如何在 SQL 数据库中表示层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18096694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com