我将感激任何其他建议或可能遇到的可预测问题的建议。
听起来对我来说是一个不错的方法。当我阅读您的帖子时,唯一不清楚的是“parents of themselves”的含义 - 如果这是要表示该语言环境没有父级,则最好使用null而不是自身的ID。
以下是一个非常灵活的模式建议。但需要提醒的是,它可能对您实际需求来说过于灵活/复杂。
位置 (位置ID,位置名称) -- 基本构建块
位置组 (位置组ID,位置组名称,父位置组ID) -- 这可以有效地封装多个层次结构。您有一个根节点,然后可以创建多个独立的分支。例如,您可以首先按州划分,然后创建几个子层次结构,例如 ZIP /城市/xxxx
位置组位置 (位置ID,位置组ID) -- 这是如何将位置与一个或多个层次结构链接起来的。例如,您可以将您的房子链接到一个ZIP,以及一个城市... 您需要实现的约束是,您不应该能够将一个位置链接到任何两个层次结构中,其中一个是另一个的父级(因为关系已经是隐含的)。
我同意其他帖子的观点,您需要非常小心地考虑您的要求。位置可能会成为一个棘手的问题,这就是为什么 GIS 系统如此复杂的原因。
如果您确定只需要基本的层次结构,则我有以下建议:
对于地理位置,您可能希望将地址解析为纬度、经度数组(也许使用 Google 地图等)以计算距离等。对于地缘政治嵌套...我会选择 KISS 方法。
如果您真的想建模,也许需要更通用的类型... 国家-> 州-> 县-> 区-> 地方-> 城市-> 郊区-> 街道或邮箱-> 号码-> -> 公寓等-> 机构(大学或雇主)-> 部门-> 子部门-1-> 分部-n ... 您确定不能采用KISS吗?
我正在为全球用户建模一个应用程序,我也遇到了相同的问题,但我认为这种方法可能已经在许多企业中使用。但为什么这个问题没有通用解决方案?或者,这个问题是否有一个最佳解决方案可以作为起点,任何人都需要从一开始就考虑解决方案?
在IT领域,我们不断地重复着同样的事情,而且发生在许多地方。例如,谁没有建立过一个以上的用户、客户或产品数据库?最糟糕的是,世界上所有的企业都做过这件事。我认为,对于普遍存在的问题,应该有普遍适用的解决方案。