在 PostGIS 表上定义唯一键

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

我正在寻求有关如何最好地使用 PostGIS 表管理以下问题的建议。

查询会根据其他几个参考表(例如行政区域(多边形)和用于根据管理问题划分区域的边界(线))生成地理扇区(多边形)表。基于 10 位数字模型,为每个扇区分配一个唯一的整数代码,该代码由随后加载扇区的应用程序强制执行:前两个描述扇区的性质,接下来的 5 个对应于其管理区域,最后一个对应于扇区的管理区域。 3 为行政区域内的序列号,保证代码的唯一性。该序列号是根据行政区域内扇区的地理位置分配的:从西北到东南,遵循大多数语言的“自然”阅读方向。

参考表在其几何形状和其他属性方面定期演变:行政边界的修改、名称的更改、新边界的创建等等。因此,地理区域表必须相应更新。运行查询时,您会得到一个最新的表,但其中的编号可能已更改:如果一个扇区被新边界划分,则按编号顺序跟随的所有扇区都将具有一个新号码。

面临的挑战是找到一个可用于更新修改的扇区并保证与其他表的引用完整性的永久标识符。在这种情况下,我不知道该怎么办。我一直在考虑数字指纹,但我不知道这是否是一个好主意以及使用哪些列来计算它。

你能帮我吗?非常感谢。真诚的

sql postgresql postgis unique-key
1个回答
0
投票

谢谢您的回复。这让我意识到我忘记指定一件事:我正在谈论的代码具有唯一性约束,但它不是主键。主键是序列号。因此,其原理是通过查询生成对象及其唯一代码,然后将它们插入到表中。 id 在插入时分配。但是,当此表已经包含以前版本的对象时,我不知道如何将它们与新的对象进行匹配(新的对象没有 id,只有唯一的代码,但对于给定对象,它可能在两个版本之间发生了变化)知道要插入、更新或删除哪些。我可以想象我的建模一定不正确,但是这个原则对于在我需要时生成最新对象来说同样实用......最后澄清:唯一代码的格式是由应用程序强加的,其中谢谢您的回复。这让我意识到我忘记指定一件事:我正在谈论的代码具有唯一性约束,但它不是主键。主键是序列号。因此,其原理是通过查询生成对象及其唯一代码,然后将它们插入到表中。 id 在插入时分配。但是,当此表已经包含以前版本的对象时,我不知道如何将它们与新的对象进行匹配(新的对象没有 id,只有唯一的代码,但对于给定对象,它可能在两个版本之间发生了变化)知道要插入、更新或删除哪些。我可以想象我的建模一定不正确,但是这个原则对于在我需要时生成最新对象来说同样实用......最后澄清:唯一代码的格式是由应用程序强加的,在该应用程序中要加载对象。

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