关系模型¶
关系表示跟踪器模型中两个实体之间的链接。关系被视为DHIS2中的数据,并且基于关系类型,类似于被跟踪实体实例基于被跟踪实体类型的方式。
关系始终包括两个实体,并且这些实体可以包括“跟踪的实体实例”,“注册”和“事件”,以及这些的任意组合。请注意,当前应用程序中并非所有这些组合都可用。
另外,关系可以定义为单向或双向。 唯一的功能差异是当前这些功能需要不同的级别 创建的权限。单向关系要求用户拥有数据 对“从”实体的写访问和对“至”实体的数据读访问, 双向关系需要双方的数据写访问权限。
关系类型¶
关系类型是关系具有的属性的定义。 关系始终包含两个方面,分别称为“从”和“到”,以及 每边可以包含哪些实体由关系确定 类型。确定每个属性可以包含的属性称为 约束,分别来自fromConstraint和toConstraint。这些约束是 在以后处理数据时很重要,以了解之间的关系 可以也不能包含。
关系类型中定义的每个约束都包含几个 属性。主要属性是关系实体,它决定什么 关系可以包含的一种实体。实体可以是 每个约束如下:
- 跟踪实体实例
- 注册
- 事件
根据您选择的关系实体的类型,可以选择 每个约束的其他限制。下表说明了 您可以配置不同的组合:
| 跟踪实体实例 | 注册 | 事件 | |
|---|---|---|---|
| 追踪实体类型 | 需要 | 可选的 | -- |
| 程序 | -- | 需要 | -- |
| 程序阶段 | -- | 需要 | 可选的 |
这些额外的限制要求实体匹配限制 在创建之前进行设置。例如,如果您的关系是 母亲和孩子,两个约束都将具有所需的跟踪实体 将类型设置为“人”,并且可以选择将“入学率”设置为“孕产妇健康” 程序和子程序。这样,仅跟踪实体实例 属于“人”类型并且已注册所需程序的人员 被包括在这些关系中。
除了关系类型可以具有的约束外,每个关系 可以设置为双向,真或假。如果该属性设置为false,则 关系被视为单向的。如前所述,唯一 这些关系之间的功能差异是访问的严格程度 创建或更新它们时-双向是最严格的。人际关系 根据关系是否在UI中呈现不同 是双向或单向的。
关于双向关系要注意的一件事是 “从”和“到”两面在数据库中仍然很重要,这意味着每个实体 必须匹配该侧的约束。但是,从用户角度来看, 在每个方面,每个实体的存储都是无关紧要的。