我们需要能够在Web应用程序中将各种类型的实体映射到不同类型的分层数据。例如,考虑一个名为供应商的实体。我们需要能够将每个供应商实例映射到地理区域。地理区域属于以下层次结构:
我们拥有完整的邮政编码,地区,城镇,地区,省,地区,国家,地区和大陆数据库。这当前作为RDBMS中的表存在。
我们的用例:
有许多这样的映射具有许多不同类型的分层数据,这只是其中一项要求。
寻找有关存储分层数据和映射的建议。请不要发布涉及在RDBMS表中存储数据和映射的答案,因为我已经知道使用RDBMS的选项。
答案 0 :(得分:2)
我知道您不是在寻找RDBMS解决方案,因为您“知道RDBMS的选项” - 但您没有说明您考虑了哪些选项以及拒绝它们的原因。我相信可能有一个你没有考虑过的RDBMS选项,它具有数据维护量低和数据检索容易的优点。
我建议您将地理区域划分为一个具有复杂关系的表格(adjacency model)。这允许您将供应商范围描述为地理覆盖记录列表。诀窍是在最高级别记录供应商的覆盖范围。然后,您还可以列出覆盖范围的排除项。
以下是建议的逻辑模型:
GEOGRAPHY
表可以使用nested sets来简化查询层次结构地理数据。
确定特定区域的供应商覆盖范围就像确认供应商对COVERAGE
感兴趣的GEOGRAPHY
(可能处于最低级别)而不是{{1}同样的COVERAGE EXCLUSION
。