0

我们需要能够将各种类型的实体映射到 Web 应用程序中不同类型的分层数据。例如,考虑一个名为Vendor的实体。我们需要能够将供应商的每个实例映射到地理区域。地理区域在以下层次结构中:

  1. 邮政编码 - 最细化的地理区域;例如,EC2
  2. 地区 - 由邮政编码组成;例如,肯辛顿。每个邮政编码将完全属于一个地区,仅此而已。
  3. 城镇 - 由地方组成;例如伦敦。每个地方都将成为一个城镇的一部分,仅此而已。
  4. 区 - 由城镇组成;例如,哥伦比亚。
  5. 省 - 由地区组成(在某些国家相当于州);例如,南卡罗来纳州。
  6. 地区 - 由省份组成;以东北省为例。
  7. 国家 - 由地区组成。
  8. 区域 - 由国家组成;以东南亚为例。
  9. 大陆 - 由区域组成。

我们有一个完整的邮政编码、地区、城镇、地区、省、地区、国家、地区和大洲的数据库。这当前作为 RDBMS 中的表存在。

我们的用例:

  1. 能够在任何级别将供应商与多个地区相关联。例如,我们可以将雀巢映射到欧洲大陆(一个区域)、加利福尼亚(美国的一个省)和大伦敦(英国的一个地区)。
  2. 能够从映射中排除地理的某些部分。例如,当将Nestle映射到California时,我们可能想要排除San Diego
  3. 如果地理的构成发生变化,则不应要求对该地理所属的映射进行任何更改。例如,如果将邮政编码添加到Greater London ,则与雀巢的映射不需要更改。
  4. 能够在数据库中查询供应商和地理级别。例如,如果我们查询雀巢邮政编码的数据库,我们应该得到大伦敦加利福尼亚(减去圣地亚哥的邮政编码)和欧洲大陆的所有邮政编码。如果我们查询雀巢国家的数据库,我们应该得到英国大伦敦的国家)、美国欧洲大陆的所有国家。

有许多这样的映射与许多不同类型的分层数据,这只是要求之一。

寻找有关存储分层数据和映射的建议。请不要发布涉及在 RDBMS 表中存储数据和映射的答案,因为我已经知道使用 RDBMS 的选项。

4

1 回答 1

2

我知道您不是在寻找 RDBMS 解决方案,因为您“知道 RDBMS 的选项” - 但您没有说明您考虑过哪些选项以及您拒绝它们的原因。我相信可能有一个您没有考虑过的 RDBMS 选项,它具有低数据维护和易于数据检索的优点。

我建议您将地理区域分组到具有内卷关系(邻接模型)的单个表中。这允许您将供应商覆盖范围描述为地理覆盖范围记录列表。诀窍是尽可能高地记录供应商覆盖率。然后,您还可以列出覆盖范围的排除项。

这是一个建议的逻辑模型:

逻辑 ERD

GEOGRAPHY表可以使用嵌套集来简化分层地理数据的查询。

确定特定区域的供应商覆盖范围就像确认供应商具有COVERAGE兴趣GEOGRAPHY(可能在最低级别)同时又不在COVERAGE EXCLUSION同一领域一样容易GEOGRAPHY

于 2012-05-09T11:29:58.187 回答