【发布时间】:2013-08-08 10:25:47
【问题描述】:
我需要在我的数据库中表示地理对象的层次结构。每个对象都有一个名称和地理坐标(纬度/经度)。
层次结构的第一级可能是两个可能的值之一:Marine | 地球。
2nd level(对于Marine)可能是 Seas |河流。 第 3 级(对于 Seas)包含所有可能的海洋名称(例如波罗的海)。
另外,在第三层,我可能想将每条海洋/河流与海洋联系起来,所有河流 应该另外与它相关的一些 Sea 链接。 还有 4th、5th 和 6th 层次结构,它们是较小的对象类型。
重要提示: [3, 4, 5, 6] 级别的任何组合都可以在这种类型的层次结构中被跳过,即我们可以有级别 (1, 2, 3, 4, 5)或 (1, 2, 3) 或 (1, 2, 3, 5)。
另外,我将在我的应用程序中使用 sqlalchemy ORM 来表示对象。
我应该为不同的层次结构级别使用不同的表,并为父节点使用外键吗? 对于跳过的级别,我们可以为每个层次结构路径使用虚拟节点。
我是否应该为所有节点制作一个统一的表并将其级别存储为整数值,并为父级使用 FK(即邻接表结构)?
每种方法的优缺点是什么?
谁有其他想法(考虑到所有限制)?
【问题讨论】:
-
您想存储层次结构中每个级别的不同内容,还是只存储名称和纬度/经度?
标签: python sql database-design orm sqlalchemy