IMS DB - 逻辑数据库



IMS 数据库有一条规则,即每个段类型只能有一个父段。这限制了物理数据库的复杂性。许多 DL/I 应用程序需要允许段具有两种父段类型的复杂结构。为了克服这个限制,DL/I 允许 DBA 实现逻辑关系,其中一个段可以同时具有物理父段和逻辑父段。我们可以在一个物理数据库中创建额外的关系。实现逻辑关系后的新数据结构称为逻辑数据库。

逻辑关系

逻辑关系具有以下属性:

  • 逻辑关系是两个在逻辑上而不是物理上相关的段之间的路径。

  • 通常,逻辑关系是在不同的数据库之间建立的。但也可以在一个特定数据库的段之间建立关系。

下图显示了两个不同的数据库。一个是学生数据库,另一个是图书馆数据库。我们创建了学生数据库中的“已借书”段和图书馆数据库中的“图书”段之间的逻辑关系。

std and library database

创建逻辑关系后,逻辑数据库如下所示:

Logical DataBase

逻辑子段

逻辑子段是逻辑关系的基础。它是一个物理数据段,但对于 DL/I 而言,它似乎有两个父段。在上例中,“图书”段有两个父段。“已借书”段是逻辑父段,“图书馆”段是物理父段。一个逻辑子段实例只有一个逻辑父段实例,一个逻辑父段实例可以有多个逻辑子段实例。

逻辑双胞胎

逻辑双胞胎是逻辑子段类型的实例,它们都从属于逻辑父段类型的单个实例。DL/I 使逻辑子段看起来类似于实际的物理子段。这也被称为虚拟逻辑子段。

逻辑关系的类型

DBA 在段之间创建逻辑关系。为了实现逻辑关系,DBA 必须在相关物理数据库的 DBDGEN 中指定它。逻辑关系有三种类型:

  • 单向
  • 双向虚拟
  • 双向物理

单向

逻辑连接从逻辑子段到逻辑父段,反之则不行。

双向虚拟

它允许双向访问。逻辑子段在其物理结构中以及相应的虚拟逻辑子段可以被视为成对的段。

双向物理

逻辑子段在物理上存储为其物理父段和逻辑父段的从属段。对于应用程序程序,它看起来与双向虚拟逻辑子段相同。

编程注意事项

使用逻辑数据库的编程注意事项如下:

  • 访问数据库的 DL/I 调用在逻辑数据库中也保持不变。

  • 程序规范块指示我们在调用中使用的结构。在某些情况下,我们无法识别我们正在使用逻辑数据库。

  • 逻辑关系为数据库编程增加了新的维度。

  • 使用逻辑数据库时必须小心,因为两个数据库集成在一起。如果修改一个数据库,则必须在另一个数据库中反映相同的修改。

  • 程序规范应指示允许对数据库进行哪些处理。如果违反处理规则,则会得到一个非空状态代码。

连接段

逻辑子段总是以目标父段的完整连接键开头。这称为目标父段连接键 (DPCK)。对于逻辑子段,您需要始终在段 I/O 区域的开头编码 DPCK。在逻辑数据库中,连接段建立在不同物理数据库中定义的段之间的连接。连接段包含以下两个部分:

  • 逻辑子段
  • 目标父段

逻辑子段包含以下两个部分:

  • 目标父段连接键 (DPCK)
  • 逻辑子段用户数据
logical child

在更新期间使用连接段时,可能可以通过单个调用添加或更改逻辑子段和目标父段中的数据。这也取决于 DBA 为数据库指定的规则。对于插入,请在正确的位置提供 DPCK。对于替换或删除,请勿更改连接段任一部分中的 DPCK 或序列字段数据。

广告