Sql 关系数据库中的地理位置建模
我正在设计一个联系人管理系统,遇到了一个关于以一致的方式对地理位置进行建模的有趣问题。我希望能够记录与特定人员相关的位置(工作、学校、家庭等的邮寄地址)。我的想法是创建一个区域设置表,如下所示: 地区(ID、LocationName、ParentID)自治地区(如美国等国家)是其父母的地方。这样我就可以任意深入地嵌套“政治单位”(国家>州>城市或国家>州>城市>大学)。有些查询必然涉及递归Sql 关系数据库中的地理位置建模,sql,database-design,Sql,Database Design,我正在设计一个联系人管理系统,遇到了一个关于以一致的方式对地理位置进行建模的有趣问题。我希望能够记录与特定人员相关的位置(工作、学校、家庭等的邮寄地址)。我的想法是创建一个区域设置表,如下所示: 地区(ID、LocationName、ParentID)自治地区(如美国等国家)是其父母的地方。这样我就可以任意深入地嵌套“政治单位”(国家>州>城市或国家>州>城市>大学)。有些查询必然涉及递归 对于我可能遇到的与此类计划有关的可预测问题,我将非常感谢任何其他建议或建议。听起来对我来说是个不错的方法。
对于我可能遇到的与此类计划有关的可预测问题,我将非常感谢任何其他建议或建议。听起来对我来说是个不错的方法。在阅读您的帖子时,我不清楚的一件事是“他们的父母”是什么意思——如果这是为了表示语言环境没有父母,那么最好使用null而不是自己的ID。您可能想看看Freebase.com,它是一个关于什么是“位置”的公开讨论的网站以及当一个位置包含在另一个位置中时的含义。这类问题会引起很多讨论
例如,有明显的“地理嵌套”,但有不太明显的逻辑嵌套。例如,从严格的地理意义上讲,梵蒂冈城位于意大利境内。但它不是政治上的嵌套。类似地,如果您的用户位于一所大学的研究中心,但不位于该大学的财产上,您是否对这种关系进行建模?我认为您可能想得太多了。这是一个原因,大多数系统只存储地址,也许还有一个国家表。以下是一些需要注意的事项:
很抱歉我的极度悲观,但我自己也走了这条路。从逻辑上讲,它既漂亮又优雅,但在实际应用中效果不太好。我会仔细考虑这一点,因为它可能不是必需的功能。 为什么不使用文本字段,让用户键入地址
记住(保持简单,愚蠢) 这里有一个非常灵活的模式建议。一个直接的警告:它可能太灵活/复杂,无法满足您的实际需要 位置 (LocationID、LocationName) --基本构造块 位置组 (LocationGroupID、LocationGroupName、ParentLocationGroupID) --这可以有效地封装多个层次结构。您有一个根节点,然后可以创建多个独立的分支。例如,您可以先按州划分,然后创建几个子层次结构,例如ZIP/city/xxxx 位置组位置 (LocationID,LocationGroupID)
--以下是如何将位置链接到一个或多个层次结构。例如,你可以将你的房子连接到一个拉链,也可以连接到一个城市。。。您需要实现的是一个约束,即您不能将一个位置与任何两个层次结构链接起来,其中一个层次结构是另一个层次结构的父级(因为关系已经是隐式的) 我同意其他帖子的观点,在这里你需要非常谨慎地考虑你的要求。位置可能成为一个棘手的问题,这就是为什么GIS系统如此复杂 如果你确定你只需要一个基本的继承权结构,我有以下建议:
- 我支持前面的评论,即根级别的项不应将自己作为父级。根级别的项对于父级应具有空值。在将数据放入无意义的字段(即“特殊”值表示无数据)时,请务必小心。这种做法在devleoper社区中很少被必要和过度使用
- 以XPath/XML为例。这是一个值得考虑的问题,麻烦记录的层次结构,并在检索过程中处理/解析数据。如果您正在使用