PostGIS数据模型设计,一张表的一个字段中包含多个Geometry类型VS每个Geometry单独的表

问题描述 投票:0回答:1

我正在学习数据库设计,特别是我的 GIS 程序的 GIS 数据库设计。 程序需要使用多种Geometry类型,即Point、LineString、Polygon。

我面临的问题是我是否应该设计一个包含通用几何类型的表或为每个几何设计单独的表。几乎与 GIS Stack Exchange

中的这个问题完全相同

但是,我非常乐意了解每种设计的优缺点。以及设计时要考虑哪些因素。

database postgresql database-design gis postgis
1个回答
0
投票

TL;DR:不要使用通用几何表(恕我直言)。

这类问题将得到明确的计算机编程答案:“这取决于你想用它做什么。”

一般在数据库设计中,我们倾向于对事物进行建模,并将一种类型的事物放在一个表中,将另一种类型的事物放在不同的表中。例如您在一个表中有一个联系人,在另一个表中有一个该联系人可能已下的订单。

这也延伸到 GIS 领域。将相同类型的对象放在一起,并赋予它们有意义的几何字段类型。通常,以不同的方式定义同一类事物是没有意义的。如果您想要一个属性,您可能需要多边形(或多多边形)。如果您特别想要属性边界,您可能需要线串。

尝试允许以不同的方式定义同一事物会使使用该数据变得更加困难。例如,如果您说“哦,它可以是边界或多边形,我们不介意”让 PostGIS 使用它会更困难。

您做出决定的一个关键因素可能是,如果您向 PostGIS 提供不同类型的几何图形,许多 PostGIS 功能就会失效。例如,如果您有一个特定的行,并且它有一个多边形,并且您想找出哪些其他行具有与其相交的几何图形,您可以使用

ST_INTERSECTS
,但这可能不会达到您想要的效果,如果您具有混合几何形状。

© www.soinside.com 2019 - 2024. All rights reserved.