首页 / 知识
关于sql:在关系数据库中建模地理位置
2023-04-14 14:19:00

Modeling Geographic Locations in an Relational Database我正在设计一个联系人管理系统,并且遇到了有关以一致方式对地理位置建模的有趣问题。 我希望能够记录与特定人相关的位置(用于工作,学校,家庭等的邮寄地址)。我的想法是创建一个区域表,例如: 自治位置(例如国家/地区,例如美国)为其自身的父级的语言环境(ID,LocationName,ParentID)。 这样,我可以任意深度地嵌套"政治单位"("国家">"州">"城市"或"国家/地区">"州">"城市">"大学")。 一些查询必然涉及递归。 对于使用这种方案可能遇到的可预见问题,我将不胜感激。 您可能想看看Freebase.com这个站点,它已经就"位置"的含义以及在另一个位置包含一个位置的含义进行了公开讨论。这些问题可以引起很多讨论。 例如,存在明显的"地理嵌套",但是不那么明显的逻辑嵌套。例如,从严格的地理意义上讲,梵蒂冈城位于意大利境内。但这并不是政治上的嵌套。同样,如果您的用户位于一所大学的研究中心内,但又不在该大学的财产范围内,您是否对这种关系进行建模? 听起来对我来说是个好方法。在阅读您的文章时,我不清楚的一件事是"自己的父母"的含义-如果这是为了指示语言环境没有父母,那么最好使用null而不是其自身的ID。 我认为您可能对此想法有所怀疑。大多数系统都有一个原因,就是仅存储地址,可能还存储国家/地区表。这里有一些注意事项: 布朗克斯区中的地址是否将自治市镇作为层次结构中的一个级别?非合并区域中的地址会消除层次结构的"城市"级别吗?如何对大学内的地址与不在大学内的地址进行建模?您最终将得到一个参差不齐的层次结构,这将迫使您每次需要在应用程序中显示地址时都要遍历树。如果您有一个"通讯录"页面,那么对性能的影响可能很大。 我不确定您是否只有一个层次结构。布朗大学在罗得岛州普罗维登斯和罗得岛州布里斯托尔设有设施。唯一的干净解决方案是拥有一个双重层次结构,其中包含两个校园,每个校园在一个层次结构中分别属于各自的城市,但在另一个层次结构中均属于布朗大学。 (大学从根本上与政治地区不同。您不应该将它们混为一谈。) 邮政编码呢?一些邮政编码包含多个城镇,而另一些城市则分为多个邮政编码。并且(很少)一些邮政编码甚至跨越州际线。 (根据维基百科,至少...) 您将如何输入数据?当您考虑虚荣地址,某些街道的备用名称,不同的国际格式等时,通过解析常规格式的地址来构建数据库可能会很困难。我认为,分等级地输入每个地址都是PITA。 听起来您正在尝试在应用程序中为整个世界建模。您是否真的想要或需要维护一个可以想象包含世界上每个城市,州,省,邮政编码和国家的表格? (或者至少每个人都认识某个人?)我唯一能想到的是,该方案可以为您带来方便,但是如果您要这样做,我将州和国家/地区(或邮政编码)分别存储并从Google添加纬度和经度数据。 对极端的悲观主义感到抱歉,但是我本人已经走了这条路。从逻辑上讲,它美观大方,但在实践中效果并不理想。 这是一个非常灵活的架构的建议。立即警告:对于您实际需要的可能太灵活/太复杂
位置
位置组
LocationGroupLocation
我会仔细考虑一下,因为它可能不是必需的功能。 记住KISS原则(保持简单,愚蠢)。 对于地理位置,您可能希望将地址解析为纬度,经度数组(可能使用Google地图等)以计算邻近度等。对于地缘嵌套,我会选择KISS响应。 如果您真的想对其建模,则可能需要更通用的类型...国家->省->县->自治市镇->地点->城市->郊区->街道或邮政信箱->数字-> ->公寓等->机构(大学或雇主)->部门->细分1->细分n ...您确定不能做KISS吗? 我同意其他帖子,在这里您需要特别注意自己的要求。位置可能成为棘手的问题,这就是GIS系统如此复杂的原因。 如果您确定只需要一个基本的层次结构,我有以下建议:
我正在为全球用户建模应用程序,但我遇到了同样的问题,但是我认为这种方法可能已经在许多企业中使用。但是,为什么这个问题没有通用的解决方案?或者,这个问题是否可以作为起点的最佳解决方案,或者自从开始以来世界上任何人都需要考虑解决方案? |
最新内容
相关内容
linux获取地址命令?
linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,linux怎么查看ip地址目录方法1:使用Ubantu(乌班图)界面右键点击通知区linux命令物理地址?
linux命令物理地址?,地址,信息,电脑,系统,网络,服务,网卡,数据,软件,手机,linux系统怎么修改网卡物理地址首先你得知道几个命令:\x0d\x0aifcolinux地址转换命令是?
linux地址转换命令是?,地址,系统,代码,密码,网络,信息,服务,电脑,设备,报告,配置LINUX的IP命令1、(1)Ifconfig命令 第一种使用ifconfig命令配置linux命令防火墙位置?
linux命令防火墙位置?,系统,服务,软件,密码,状态,位置,防火墙,工具,公共,设备,LINUX系统怎么关闭防火墙1、打开linux系统,在linux的桌面的空白linux的ip地址命令?
linux的ip地址命令?,地址,系统,网络,信息,数字,电脑,终端,命令,服务,名称,Linux如何配置ip地址?1、第一种使用ifconfig命令配置网卡的ip地址。linux修改地址命令?
linux修改地址命令?,地址,系统,代码,网络,服务,信息,密码,命令,管理,基础,linux设置ip地址?打开Linux终端系统,然后在系统中输入如下代码。然后linux查看命令的地址?
linux查看命令的地址?,地址,系统,网络,信息,设备,电脑,手机,终端,技术,环境,linux查询ip地址命令输入以下命令:ipaddrshow。每个设备的IP地址位linux地址查询命令?
linux地址查询命令?,地址,网络,系统,工作,信息,设备,名称,标准,手机,管理,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux光标位置命令?
linux光标位置命令?,位置,光标,时间,系统,状态,终端,命令,程序,文件,菜单,linux下编辑文件时如何定位光标到文件末尾1、首先登录到Linux系统。linux带源地址命令?
linux带源地址命令?,时间,地址,数据,网络,系统,信息,档案,命令,名称,名字,Linux系统中tracert命令使用详解1、traceroute [参数] [主机]命令功linux命令文件换位置?
linux命令文件换位置?,位置,财务,系统,公司,名称,目录,文件,命令,一致,工作,linux怎么将一个文件移动到另一个目录下1、如果目标文件是到某一linux命令查看地址?
linux命令查看地址?,地址,网络,系统,信息,电脑,数字,设备,管理,终端,命令,linux怎么查看ip地址目录方法1:使用Ubantu(乌班图)界面右键点击通知区