IMS DB - 逻辑数据库

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

逻辑关系

逻辑关系具有以下属性 :

  • 逻辑关系是两个段之间的路径,它们在逻辑上而非物理上相关.

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

下图显示了两个不同的数据库.一个是学生数据库,另一个是图书馆数据库.我们在学生数据库中的Books Issued段与Library数据库中的Books段之间创建逻辑关系.

std and library database

这是逻辑数据库在创建逻辑关系时的外观 :

逻辑数据库

逻辑子段

逻辑子段是逻辑关系的基础.它是一个物理数据段,但对于DL/I,它看起来好像有两个父节点.上例中的Books部分有两个父段.已发行的图书分部是逻辑父母,而图书馆分部是实际父母.一个逻辑子段出现只有一个逻辑父段出现,一个逻辑父段出现可以有多个逻辑子段出现.

逻辑双精度

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

逻辑关系的类型

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

  • 单向

  • 双向虚拟

  • 双向物理

单向

逻辑连接从逻辑子连接到逻辑父,它不能反过来.

双向虚拟

它允许在两个方向上进行访问.物理结构中的逻辑子节点和相应的虚拟逻辑子节点可以看作是成对的节段.

双向物理

逻辑子节点是物理的存储从属于其物理和逻辑父母.对于应用程序,它看起来与双向虚拟逻辑子程序的方式相同.

编程注意事项

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

  • 访问数据库的DL/I调用与逻辑数据库保持一致.

  • 程序规范块表示我们在调用中使用的结构.在某些情况下,我们无法确定我们使用的是逻辑数据库.

  • 逻辑关系为数据库编程添加了一个新维度.

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

  • 程序规范应指明数据库允许的处理.如果违反了处理规则,您将获得非空白状态代码.

连锁段

逻辑子段始终以目标父级的完整连接键开头.这称为目标父级连锁密钥(DPCK).您需要始终在逻辑子级的段I/O区域的开头编码DPCK.在逻辑数据库中,连接段在不同物理数据库中定义的段之间建立连接.连接的段由以下两部分组成 :

  • 逻辑子段

  • 目标父级段

逻辑子段由以下两部分组成 :

  • 目标父级连锁密钥(DPCK)

  • 逻辑子用户数据

逻辑子

当我们在更新期间使用连接段时,可以在逻辑子级和逻辑子级中添加或更改数据只有一个电话的目的地父母.这还取决于DBA为数据库指定的规则.对于插入,请将DPCK放在正确的位置.对于替换或删除,请勿更改连接段的任何部分中的DPCK或序列字段数据.