地理数据库关系类基础知识

地理数据库中的关系类管理一个类(要素类或表)中的对象与另一个类中的对象之间的关联。 关系两端的对象可以是包含几何的要素,也可以是表中的记录。

例如,野营地设施点(源表)要素类可以与露营地(目标表)要素类关联,因为它们共享一个包含公共值的公共字段,即源表上的 FacilityID 和目标表上的 ParentFacilityID,在两者中,字段的数据类型均为长整型。 在本例中,将这些记录关联,可以实现选择单个野营地设施点时,能够访问与该野营地关联的多个露营点。

关系类管理不同的要素类或表之间对象的关联。
这是一对多 (1:M) 关系类的示例。

关系类的优点

地理数据库中的关系类根据公共字段(也称为键)在两个表之间建立连接。 此连接可用于强制实现引用完整性或在相关的记录之间导航。 以下是关系类提供的一些优势和高级功能:

  • 引用完整性 - 关系类可以强制实现引用完整性,从而确保表之间的关系保持一致。 这意味着,当源表中的记录被删除时,目标表中的所有相关记录也会被删除。
  • 优化的数据条目和编辑功能 - 编辑数据时,关系类有助于确保更改的内容在相关表中正确填充。 此功能有助于防止数据不一致及错误。
  • 更丰富的数据分析 - 当数据集之间建立了关系类时,您可以执行更复杂的查询和分析。 例如,可以在一个表中查找与另一个表中的特定要素相关的所有要素。
  • 高效的数据管理 - 关系类有助于高效地管理相关数据。 可以将数据存储在一个位置,并从其他表创建与该数据的关系,而无需在多个表中复制数据。
  • 基数 - 基数描述项目或数据如何相互关联。 例如,在城市的 GIS 数据中,一对一关系可表示一栋建筑物对应一个所有者。 一对多关系可表示一条公共汽车路径服务多个公共汽车站点。 多对多关系可表示访问多个商店的多个购物者。 关系类有助于用户理解上述连接,并且可以解释复杂的数据。
  • 关系规则 - 可以在关系类中定义约束,以确保在编辑数据时保持空间数据的准确性和一致性。 例如,关系规则可以规定每个建筑物必须与特定宗地相关联。 可以为事物的连接方式(如一栋建筑物与一个宗地、一条公共汽车路径与多个公共汽车站点或访问多个商店的多个购物者)设置规则,在地理数据库中保持数据的准确性和可靠性,从而帮助维护数据的完整性。 这种方法有益于维护数据完整性。
  • 属性化关系 - 关系类可以存储有关关系本身的附加信息。 例如,在道路和交通事故之间的关系中,属性可以存储在各个路段上发生的事故的数量。 关系类可以包含属性,可使用这些属性存储有关关系本身的信息。 例如,可以存储关系的建立日期。
  • 通知 - 通知用于支持自动更新。 如果在一个表中进行了更改,则可以自动更新另一个表中的相关记录。 关系类可以在某些事件发生时(例如在创建或删除关系时)发送消息。 此功能可用于触发应用程序中的自定义行为。
  • 导航 - 可以在两个方向上导航关系。 例如,如果在“客户”表和“订单”表之间存在关系,则可以查找特定客户的所有订单或查找与特定订单关联的客户。
  • 级联更新和删除 - 关系类支持级联更新和删除。 这意味着,如果更新或删除了源表中的记录,则可以将更改传播到目标表中的相关记录。

关系类的限制

地理数据库中的关系类管理两个相关要素类或表中对象之间的关联。 但是,存在以下约束和限制。

  • 只能在相同地理数据库中的要素类或表之间定义关系类。
  • 要素类或表也必须存储在同一个地理数据库中。

参与多个关系类的数据集

要素类或表可参与不止一个关系类,但存在一些限制。

  • 一个给定的要素类或表无法成为两个复合关系类中的目标。 但您可以在一对类之间拥有一个以上的简单关系。 根据导航关系的方向,您可在需要强制使用不同的基数时执行此操作。
  • 如果复合关系类存在于两个类之间,则无法在相同的两个类之间创建其他的关系类。
  • 要在要素数据集中创建关系类,源类或目标类中的任意一个必须在要素数据集中。
  • 可以在一对类之间拥有一个以上的简单关系。 根据导航关系的方向,您可在需要强制使用不同的基数时执行此操作。

不支持的关系类

ArcGIS 中不支持以下类型和属性的关系类:

  • 在相同要素类或表中的记录之间存在的递归关系在 ArcGIS 中尚不支持。
  • 每个主键与外键仅可基于一个字段;ArcGIS 中不支持复杂的主键和外键。

如果您已根据所拥有的数据和尝试解答的问题确定了在地理数据库中使用关系类是最适用的方法,那么接下来的步骤就是了解地理数据库关系类类型创建关系类

相关主题