【发布时间】:2016-07-18 14:18:53
【问题描述】:
我在 postgreSQL 中有四个表如下:
Table A Table A_POINTS Table A_LINES TABLE A_POLYGONS
----------------- ---------------- -------------- ----------------
id / colum1 / ... id/ the_geom id / the_geom id/ the_geom
我想确保表 A 中的一个元素仅存在于一个几何表中。
我可以通过在几何表中设置 id UNIQUE 约束来做到这一点吗? 在这种情况下,我该如何在 postgreSQL 中做到这一点?
编辑
是的,我想要的是三个表的某种唯一约束。表 A 与点、线或多边形相关,但同时只有一个。
Table A Table A_POINTS Table A_LINES TABLE A_POLYGONS
----------------- ---------------- -------------- ----------------
id / colum1 / ... id/ the_geom id / the_geom id/ the_geom
1 blabla 1 09838082.. 3 082982.. 2 092809...
2 bleble
3 blibli
那么有可能吗?
【问题讨论】:
-
你有哪三个几何表(定义完全相同)?
-
因为我将这些表连接到 Geoserver,如果我在同一个表中有所有几何图形并且我不限制它的几何类型,Geoserver 将无法在同一个“层”中呈现不同的几何图形。我可以将所有内容都放在同一个表中,但稍后在 Geoserver 中我必须执行 SQL 视图以按几何图形分隔它。
-
视图确实是避免重复 id 的方法。但我认为您也希望对三种几何类型进行列级约束。
-
查看我的编辑。我可以通过使用一些服务器端代码和对数据库的查询来控制它。但我认为如果这可能的话,这可能是一个更优雅的解决方案。感谢您的回复。
标签: sql postgresql constraints postgis data-modeling